Пример #1
0
int NetInterface::initInterface( int iMaster, char* strMasterIP, unsigned short usMasterPort, unsigned short uslocalPort  )
{
	unsigned int dwIOKey;
	if ( 1== iMaster )
	{
		dwIOKey = SLAVE_IOHANDLER_KEY;
	}
	else
	{
		dwIOKey = MASTER_IOHANDLER_KEY;
	}
	IOHANDLER_DESC desc;
	desc.dwIoHandlerKey				= dwIOKey;
	desc.dwMaxAcceptSession			= 1000;
	desc.dwMaxConnectSession		= 1;
	desc.dwSendBufferSize			= 60000;
	desc.dwRecvBufferSize			= 60000;
	desc.dwTimeOut					= 1000 * 60 * 20;
	desc.dwMaxPacketSize			= 4096;
	desc.dwNumberOfIoThreads		= 1;
	desc.dwNumberOfAcceptThreads	= 1;
	desc.dwNumberOfConnectThreads	= 1;
	desc.fnCreateAcceptedObject		= CreateAcceptedObject;
	desc.fnDestroyAcceptedObject	= DestroyAcceptedObject;
	desc.fnDestroyConnectedObject	= DestroyConnectedObject;

	if( !m_IOCPServer.Init( &desc, 1 ) )
	{
		DISPMSG_ERROR( "IOCP initialize failed!" );
		return 0;
	}

	if ( 1 != iMaster )
	{
		uslocalPort += 10000;
		m_IOCPServer.Connect( dwIOKey, JK_NEW(MasterConnector), strMasterIP, usMasterPort,1024 * 1024*8,1024 * 1024 * 8,1024 * 64 );
	}

	if( !m_IOCPServer.StartListen( dwIOKey, NULL, uslocalPort ) )
	{
		DISPMSG_ERROR( "Listen failed! IP:%s Port:%d !", "null", uslocalPort );
		return 0;
	}

	if( 1 == iMaster )
	{
		DISPMSG_SUCCESS( "Master start success!\n" );
	}
	else
	{
		DISPMSG_SUCCESS( "Slave start success!\n" );
	}
	return 1;
}
Пример #2
0
bool DataSpace::ListPushRight( char* key, int keylen, char* val, int vallen, bool ops /*= true */ )
{
	void* pkey = JK_MALLOC( keylen+1 );
	if ( !pkey )
	{
		DISPMSG_ERROR( "malloc memory failed!\n");
		return false;
	}
	void* pval = JK_MALLOC( vallen+1 );
	if ( !pval )
	{
		DISPMSG_ERROR( "malloc memory failed!\n");
		JK_FREE( pkey );
		return false;
	}
	JK_MEMCPY_S(pkey,keylen+1,key,keylen+1);
	JK_MEMCPY_S(pval,vallen+1,val,vallen+1);
	moly_list_type* pDList = (moly_list_type*)m_normalDict.GetElement( pkey );
	if ( pDList )
	{
		if ( NULL == pDList->RPush( (char*)pval ) )
		{
			JK_FREE( pkey );
			JK_FREE( pval );
			return false;
		}
		if ( ops )
		{
			Operation	( LOG_CMD_LIST_RPUSH, pkey, pval );
			Replication	( LOG_CMD_LIST_RPUSH, key, pval );
		}
		return true;
	}
	pDList = JK_NEW(moly_list_type);
	if ( !pDList )
	{
		DISPMSG_ERROR( "malloc memory failed!\n");
		JK_FREE( pkey );
		JK_FREE( pval );
		return false;
	}
	if( NULL == pDList->RPush( (char*)pval ) )
	{
		JK_FREE( pkey );
		JK_FREE( pval );
		JK_DELETE( moly_list_type, pDList );
		return false;
	}
	if ( !m_normalDict.AddElement(pkey, pDList ) )
	{
		JK_FREE( pkey );
		JK_FREE( pval );
		JK_DELETE( moly_list_type, pDList );
		return false;
	}
	if ( ops )
	{
		Operation	( LOG_CMD_LIST_RPUSH, pkey, pval );
		Replication	( LOG_CMD_LIST_RPUSH, key, pval );
	}
	return true;
}
Пример #3
0
NetworkObject* NetInterface::CreateAcceptedObject()
{
	ClientAgent* pAgent = JK_NEW(ClientAgent);
	pAgent->ClientAgent::ClientAgent();
	return pAgent;
}