DragonNest/Common/NxServerLib/include/NxConnectionManager.h

62 lines
1.6 KiB
C
Raw Normal View History

2024-12-19 09:48:26 +08:00
#pragma once
#include "NxDataStructure.h"
class NxAsyncEventHandler;
class NxCompletionPort;
class NxConnection;
class NxConnectionManager
{
public:
NxConnectionManager();
virtual ~NxConnectionManager();
bool Create(DWORD nConnectionCnt, NxCompletionPort* pNetIOCompletionPort,
NxCompletionPort* pMsgCompletionPort, NxAsyncEventHandler* pMsgHandler);
void Destroy();
NxConnection* FindActiveConnection(DWORD nUID);
NxConnection* Find(DWORD nUID);
NxConnection* ActiveConnection(unsigned short nPort, SOCKET hSocket, sockaddr_in pAddr);
bool InactiveConnection(NxConnection* pConnection);
NxConnection* ActiveConnection(const TCHAR* szIPAddress, unsigned short nPort);
bool InactiveConnection(DWORD nUID);
DWORD GetActiveConnectionCnt() { return ( DWORD )m_ActiveConnectionMap.size(); }
DWORD GetInactiveConnectionCnt() { return ( DWORD )m_InActiveConnectionList.size(); }
protected:
virtual void _CreateConnectionPool(DWORD nConnectionCnt);
virtual void _DeleteConnectionPool();
protected:
typedef NxMap<DWORD, NxConnection*> ConnectionMap;
typedef ConnectionMap::iterator ConnectionMapIt;
typedef std::vector<NxConnection*> ConnectionArray;
typedef NxList<NxConnection*> ConnectionList;
typedef ConnectionList::iterator ConnectionListIt;
ConnectionArray m_ConnectionArray;
ConnectionMap m_ActiveConnectionMap;
ConnectionList m_InActiveConnectionList;
// IO <20><> CP
NxCompletionPort* m_pNetIOCompletionPort;
// Msg ó<><C3B3><EFBFBD><EFBFBD> CP
NxCompletionPort* m_pMsgCompletionPort;
// Msg <20>޴<EFBFBD> <20>ڵ鷯 NxServerApp <20><>ü <20>̴<EFBFBD>.
NxAsyncEventHandler* m_pMsgHandler;
};