bool_t AsyncAcceptor::AcceptEventHandler(AsyncSession *sess) { bool_t ret = FALSE; AsyncResultPool *act_pool = ActPool(); if(!act_pool) { ECILA_TRACE(); return FALSE; } EventResult *evr = act_pool->Acquire(); if(!evr) { ECILA_TRACE(); return FALSE; } RingBuffer *buffer = sess->RecvBuffer(); if(!buffer) { ECILA_TRACE(); return FALSE; } evr->Event(EVENT_READ); evr->Handler(this); evr->AcceptHandler(sess); evr->Buffer((char_t*)buffer->GetInPtr(), buffer->Remain()); ret = sock_.Accept((Socket *)sess->Handle(), evr->Buffer(), evr); if(!ret) { ECILA_TRACE(); return FALSE; } return TRUE; }