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; }
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; }
NetworkObject* NetInterface::CreateAcceptedObject() { ClientAgent* pAgent = JK_NEW(ClientAgent); pAgent->ClientAgent::ClientAgent(); return pAgent; }