티스토리 뷰

ACE_Asynch_Write_Stream은 Proactor에서 패킷을 보내는데 사용되는 클래스 입니다. 3개의 메소드로 구성되어 있습니다.

  • int open(...) : 초기화 함수. HA_Proactive_Service 를 첫번째 인자로 넣어주면 됩니다.
  • int write(...) : Send 함수. Message_Block과 보낼 길이를 인자로 넣습니다.
  • int writev(...) : write 함수와 비슷한데, Linked List로 구성되어 있는 Message_Block을 한방에 주욱~ 보내줍니다. 이전 write에 대한 complete가 떨어지지 않은 상태에서 write요청이 들어오면 List로 구성해놓았다가(Message_Block의 cont 메소드) completion이 떨어지면 한방에 보내는 식으로 구성하면 편리합니다.


write() 메소드의 반환값

  • 0 : 성공(pending IO)
  • -1 : 실패

pending IO는 아직 완료되지 않았다는 의미인데, Proactor(IOCP)에서는 성공으로 간주됩니다. 



writev() 함수의 반환값

  • 1 : 바로 성공
  • 0 : 성공(pending IO)
  • -1 : 실패

바로 성공 했더라도 completion handler(handle_write_stream)는 여전히 불립니다.


[출처] http://javawork.egloos.com/2154843

댓글