iWARPEM_Multiplexed_Endpoint_t( int aRouterFd = 0, int aMaxClientCount = IT_API_MULTIPLEX_MAX_PER_SOCKET, iWARPEM_Object_Accept_t *aListenerCtx = NULL ) : mClientCount(0), mRouterConnFd( aRouterFd ), mMaxClientCount( aMaxClientCount ), mReceiveDataLen( 0 ), mPendingRequests( 0 ), mNeedsBufferFlush( false ) { bzero( &mRouterInfo, sizeof( iWARPEM_Router_Info_t )); mClientEPs = new MultiplexedConnectionType*[ aMaxClientCount ]; bzero( mClientEPs, sizeof( MultiplexedConnectionType*) * aMaxClientCount ); pthread_spin_init( &mAccessLock, PTHREAD_PROCESS_PRIVATE ); mListenerContext = aListenerCtx; mSendBuffer = new SocketBufferType(); mReceiveBuffer = new ReceiveBufferType(); mReceiveBuffer->ConfigureAsReceiveBuffer(); ResetSendBuffer(); ResetRecvBuffer(); BegLogLine( FXLOG_IT_API_O_SOCKETS_MULTIPLEX_LOG ) << "Creating multiplexed router endpoint..." << " socket: " << mRouterConnFd << " maxClients: " << aMaxClientCount << " BufferSizes: " << IT_API_MULTIPLEX_SOCKET_BUFFER_SIZE << " Recv: @" << (void*)mReceiveBuffer << " Send: @" << (void*)mSendBuffer << EndLogLine; #ifdef MULTIPLEX_STATISTICS mMsgCount = 0; mFlushCount = 0; mMsgAvg = 1.0; #endif }
void zSocket::BeginReadNewMessage() { ResetRecvBuffer(); asio::async_read(socket_, asio::buffer(recvBuffer_,PH_LEN), strand_.wrap(boost::bind( //&zSocket::HandleReadHead, shared_from_this(), &zSocket::HandleReadHead, this, asio::placeholders::error))); }