📄 socketlayer.cc
字号:
// SocketLayer.cpp: interface for the SocketLayer class.
/*/////////////////////////////////////////////////////////////////////////////
Socket层,负责进行数据打包、解包;编码、解码;
李亦
2006.06.21
/*//////////////////////////////////////////////////////////////////////////////
//#include "Platforms.h"
#include "server/net/NetTCPModule.h"
#include "server/net/IOTCPModule.h"
#include "server/net/IOUDPModule.h"
#include "server/net/AuthSocket.h"
#include "server/net/AuthNull.h"
#include "server/encrypt/EncryptEngine.h"
#include "server/encrypt/EncryptXORModule.h"
#include "server/encrypt/EncryptDESHashModule.h"
#include "server/SocketLayer.h"
namespace CS
{
#define SERVER_TICK 20
CAuthHandlerManager SocketLayer::ms_authHandlerMan;
CEncryptHandlerManager SocketLayer::ms_encryptHandlerMan;
CIOHandlerManager SocketLayer::ms_ioHandlerMan;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
SocketLayer::SocketLayer()
:Thread(0,0,FALSE)
{
m_pRecvCallBack = NULL;
m_pCommand = NULL;
//m_uIdleTimeOut = 5000;
//InitializeCriticalSection(&m_NetCritSec);
}
SocketLayer::~SocketLayer()
{
if(m_pCommand)
delete m_pCommand;
}
IMPLEMENT_CONOBJECT(SocketLayer);
void SocketLayer::Initialize()
{
//m_pCommand=new CmdManager();
//if(m_pCommand == NULL)
// return FALSE;
//
//m_pCommand->InitializeCommandDispatcher();
//m_pCommand->RegisterNativeCommands();
ms_ioHandlerMan.Insert(NetTCPModule::GetIOHandler());
ms_ioHandlerMan.Insert(IOTCPModule::GetIOHandler());
ms_ioHandlerMan.Insert(IOUDPModule::GetIOHandler());
ms_encryptHandlerMan.Insert(EncryptXORModule::GetEncryptEngine());
ms_encryptHandlerMan.Insert(CEncryptDESHashModule::GetEncryptEngine());
ms_authHandlerMan.Insert(AuthNull::GetNullAuthHandler());
}
void SocketLayer::Destroy()
{
}
CAuthSocket * SocketLayer::CreateAuthSocket(char *pszNetMod, char *pszEncryption, char *pszAuth)
{
CS_IOHANDLER *pioh = ms_ioHandlerMan.GetHandlerByID(pszNetMod);
AssertWarn(pioh,"确认调用了initialze进行初始化了");
if(pioh==NULL)
return NULL;
CS_ENCRYPTHANDLER *peh = ms_encryptHandlerMan.GetEngineByID(pszEncryption);
AssertWarn(peh,"确认调用了initialze进行初始化了");
if(peh==NULL)
return NULL;
CS_AUTHHANDLER *pah = ms_authHandlerMan.GetHandlerByID(pszAuth);
AssertWarn(pah,"确认调用了initialze进行初始化了");
if(pah==NULL)
return NULL;
CAuthSocket *pAuthSock = new CAuthSocket(pah , pioh, peh);
if(pAuthSock != NULL)
OnCreateAuthSocket(pAuthSock);
return pAuthSock;
}
CAuthSocket * SocketLayer::ConnectAuthSocket(INTERACT_CONN_PROC *pIC, int nUserId, HWINDOW hParent, LPCSTR svBindStr, LPCSTR svNetMod, LPCSTR svEncryption, LPCSTR svAuth)
{
char szNetMod[256];
char szBindStr[256];
char szEncryption[256];
char szAuth[256];
if(pIC!=NULL)
{
if((*pIC)(hParent,svBindStr,svNetMod,svEncryption,svAuth,szBindStr,szNetMod,szEncryption,szAuth) < 0)
return NULL;
}
else
{
if(svNetMod==NULL || svBindStr==NULL || svEncryption==NULL || svAuth==NULL)
return NULL;
dStrncpy(szNetMod, svNetMod,256);
dStrncpy(szBindStr, svBindStr,256);
dStrncpy(szEncryption, svEncryption,256);
dStrncpy(szAuth, svAuth,256);
}
CAuthSocket *pAuthSock = CreateAuthSocket(szNetMod,szEncryption,szAuth);
if(pAuthSock==NULL)
return INVALID_AUTHPTR;
if(pAuthSock->Connect(szBindStr,nUserId) != E_IOOK)
{
delete pAuthSock;
return INVALID_AUTHPTR;
}
return pAuthSock;
}
CAuthSocket* SocketLayer::ListenAuthSocket(INTERACT_LISTEN_PROC *pIL, int nUserId, HWINDOW hParent, LPCSTR svBindStr, LPCSTR svNetMod, LPCSTR svEncryption, LPCSTR svAuth)
{
char szNetMod[256];
char szBindStr[256];
char szEncryption[256];
char szAuth[256];
if(pIL!=NULL)
{
if((*pIL)(hParent,svBindStr,svNetMod,svEncryption,svAuth,szBindStr,szNetMod,szEncryption,szAuth) < 0)
return NULL;
}
else
{
if(svNetMod==NULL || svBindStr==NULL || svEncryption==NULL || svAuth==NULL)
return NULL;
dStrncpy(szNetMod, svNetMod,256);
dStrncpy(szBindStr, svBindStr,256);
dStrncpy(szEncryption, svEncryption,256);
dStrncpy(szAuth, svAuth,256);
}
CAuthSocket *pAuthSock = CreateAuthSocket(szNetMod,szEncryption,szAuth);
if(pAuthSock==NULL)
return INVALID_AUTHPTR;
if(pAuthSock->Listen(szBindStr,nUserId) != E_IOOK)
{
delete pAuthSock;
return INVALID_AUTHPTR;
}
return pAuthSock;
}
};//namespace CS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -