검색결과 리스트
HelfNetwork에 해당되는 글 1건
- 2009.03.21 [HalfNetwork] 0.5.1 버젼 릴리즈
HalfNetwork가 버전 업 되었습니다.
아래의 글은 임영기님의 이번에 변경된 것에 대한 설명입니다.
------------------------------------------------------------------------------------
안녕하세요. 임영기 입니다.
HalfNetwork 0.5.1 버젼을 릴리즈 했습니다.
SourceForge.net에
svn, download 모두 올렸습니다.
안정성 향상에 주안점을 둔 Release 입니다.
다운로드
https://sourceforge.net/
변경사항
http://halfnetwork.springnote.
추가로
하나 말씀드리면 NetworkFacade클래스에 PopMessage와 PopAllMessage 함수가 있습니다.
전자는 블럭을 하나
꺼내오는 함수이고 후자는 블럭을 체인(링크드 리스트)으로 구성해서 꺼내오는 함수 입니다.
가능하면 PopAllMessage를 사용하시기를
추천드립니다. 한번에 다 꺼내와서 루프돌면서 처리하기 때문에
Context switching을 줄여서 상당한 성능 향상을 보실수
있습니다.
아래와 같이 처리하시면 됩니다. 예제에는 넣지 못했습니다. 다음 릴리즈에 추가할 예정입니다.
ACE_Message_Block* headBlock = NULL;
if ( false ==
NetworkFacadeInstance->
return;
ACE_Message_Block* commandBlock =
headBlock;
do
{
MessagePostee postee;
memcpy(&postee, commandBlock->rd_ptr(), sizeof(MessagePostee));
commandBlock->rd_ptr(sizeof(
ACE_Message_Block* payloadBlock = commandBlock->cont();
assert(NULL != payloadBlock);
switch(postee.command)
{
case MessageHeader::ESTABLISH:
_OnConnect(postee.stream_id, payloadBlock->rd_ptr());
break;
case MessageHeader::READ:
_OnRead(postee.stream_id, payloadBlock->rd_ptr(),
payloadBlock->length());
break;
case
MessageHeader::CLOSE:
_OnClose(postee.stream_id);
break;
}
commandBlock =
payloadBlock->cont();
} while(NULL != commandBlock);
headBlock->release();
-------------------------------------------------------------------------------------
임영기님의 블로그 http://javawork.egloos.com/
HalfNetwork 스프링노트 http://halfnetwork.springnote.com/
댓글