int Connections::Create(Network* pNetwork) { FUNCTION_BEGIN(); if (IsStatus(CONNSTATUS_CREATE)) { Logger::Log("true == IsStatus( STATUS_CREATE )\n"); return 1; } if (NULL == pNetwork) { Logger::Log("NULL == pNetwork\n"); return 2; } if (NULL != _NetworkRef) { Logger::Log("NULL != _NetworkRef, _NetworkRef = %016x\n", _NetworkRef); return 3; } if (false == _recvBuffer.Create(GetMaxRecvPacketCount(), GetMaxRecvPacketSize())) { return 4; } if (false == _sendBuffer.Create(GetMaxSendPacketCount(), GetMaxRecvPacketSize())) { return 5; } int rc = _socket.Create(); if (0 != rc) { return rc; } rc = _socket.SetKeepAlive(CONNECTION_KEEP_ALIVE_TIME, CONNECTION_KEEP_ALIVE_INTERVAL); if (0 != rc) { return rc; } rc = _socket.SetLinger(true, 0); if (0 != rc) { return rc; } _PacketEncoder = GetPacketEncoder(); _NetworkRef = pNetwork; SetStatus(CONNSTATUS_CREATE); return 0; }
//----------------------------------------------------------------------------------- // Purpose : // Return : //----------------------------------------------------------------------------------- // Called by Acceptor TH, Connector TH //----------------------------------------------------------------------------------- int CNtlConnection::Create(CNtlNetwork * pNetwork) { FUNCTION_BEGIN(); if( IsStatus( STATUS_CREATE ) ) { NTL_LOG_ASSERT("true == IsStatus( STATUS_CREATE )"); return NTL_ERR_NET_CONNECTION_STATUS_WRONG; } if( NULL == pNetwork ) { NTL_LOG_ASSERT("NULL == pNetwork"); return NTL_ERR_SYS_INPUT_PARAMETER_WRONG; } if( NULL != m_pNetworkRef ) { NTL_LOG_ASSERT("NULL != m_pNetworkRef, m_pNetworkRef = %016x", m_pNetworkRef); return NTL_ERR_SYS_OBJECT_ALREADY_CREATED; } if( false == m_recvBuffer.Create( GetMaxRecvPacketCount(), GetMaxRecvPacketSize() ) ) { return NTL_ERR_SYS_MEMORY_ALLOC_FAIL; } if( false == m_sendBuffer.Create( GetMaxSendPacketCount(), GetMaxRecvPacketSize() ) ) { return NTL_ERR_SYS_MEMORY_ALLOC_FAIL; } int rc = m_socket.Create( CNtlSocket::eSOCKET_TCP ); if( NTL_SUCCESS != rc ) { return rc; } rc = m_socket.SetKeepAlive( CONNECTION_KEEP_ALIVE_TIME, CONNECTION_KEEP_ALIVE_INTERVAL ); if( NTL_SUCCESS != rc ) { return rc; } rc = m_socket.SetLinger( true, 0 ); if( NTL_SUCCESS != rc ) { return rc; } #if __SGPRO_BOTSYSTEM_SENDANDRECVTESTCODE__ m_pPacketEncoder = NULL; #else m_pPacketEncoder = GetPacketEncoder(); #endif m_pNetworkRef = pNetwork; SetStatus( STATUS_CREATE ); return NTL_SUCCESS; }