#ifndef ACCEPTOR_CPP #define ACCEPTOR_CPP #include "Acceptor.h" #include "Utility.h" template CAcceptor::CAcceptor(void) :m_pReadQueue(NULL), m_pSendQueue(NULL) { } template CAcceptor::CAcceptor(IBufQueue *pReadQueue, IBufQueue *pSendQueue, unsigned int uiPeerBufferSize) : m_pReadQueue(pReadQueue), m_pSendQueue(pSendQueue),m_uiPeerBufferSize(uiPeerBufferSize) { } template CAcceptor::~CAcceptor(void) { } template int CAcceptor::open(const ACE_PEER_ACCEPTOR_ADDR &local_addr, ACE_Reactor *reactor,int flags, int use_select, int reuse_addr ) { if(parent::open(local_addr, reactor, flags, use_select, reuse_addr) == -1) return -1; // 设置recvbuf,sendbuf int iOldBuf = 0; int iNewbuf = 512* 1024; int optLen = sizeof(iOldBuf); int i = this->acceptor().get_option(SOL_SOCKET, SO_SNDBUF, &iOldBuf, &optLen); i = this->acceptor().set_option(SOL_SOCKET, SO_RCVBUF, &iNewbuf, sizeof(iNewbuf)); i = this->acceptor().set_option(SOL_SOCKET, SO_SNDBUF, &iNewbuf, sizeof(iNewbuf)); i = this->acceptor().get_option(SOL_SOCKET, SO_SNDBUF, &iOldBuf, &optLen); return 0; } template int CAcceptor::make_svc_handler(SVC_HANDLER *&sh) { if((m_pReadQueue == NULL)|| (m_pSendQueue == NULL)) return -1; if(sh == 0) ACE_NEW_RETURN (sh, SVC_HANDLER(m_uiPeerBufferSize), -1); sh->reactor (this->reactor ()); // 设置队列 sh->ReadQueue(this->ReadQueue()); sh->SendQueue(this->SendQueue()); return 0; } template IBufQueue * CAcceptor::ReadQueue(void) { return m_pReadQueue; } template void CAcceptor::ReadQueue(IBufQueue *pReadQueue) { m_pReadQueue = pReadQueue; } template IBufQueue * CAcceptor::SendQueue(void) { return m_pSendQueue; } template void CAcceptor::SendQueue(IBufQueue *pSendQueue) { m_pSendQueue = pSendQueue; } #endif/*ACCEPTOR_CPP*/