1) APG책(ACE 프로그래머 가이드)에 나오는 Proactor 예제 보시면 매번 할당 받는 식으로 되어 있습니다. 이렇게 하
셔도 되고 ACE_Message_Block pool을 만들어서 쓰셔도 됩니다. pool을 만들어서 사용하는 방법은
http://javawork.springnote.com/pages/971284 에 밑에 쯤에 첨부되어 있는 소스 참고하시면 될
것 같습니다.
2) 완전하게 받은 것인지 체크하는 방법은 어떤 함수가 있는 것은 아니고 패킷 구조를 잘 정의 하셔서 체크하셔야 합니다. 예를
들면 |패킷타입|패킷길이|데이터...| 이런식으로 정의를 하셔서 패킷 길이만큼 다 받은 것인지 체크하시면 됩니다.
3) 재전송 처리는 아래와 같이 하시면 됩니다.
ACE_Service_Handler::handle_write_stream(const
ACE_Asynch_Write_Stream::Result& result)
{
size_t remainLength = result.bytes_to_write() -
result.bytes_transferred()
if (remainLength > 0)
{
writer_.write(result.message_block(), remainLength);
}
.
.
}
4) 국내에 출판된 APG, C++NP 1, 2 에 나와있는 예제와 ACE배포본의 examples, apps 폴더에 있는 예제
를 참고하셔야 할 것 같습니다. 그 이외에는 딱히 참고할만한 예제를 본적이 없습니다.