Files
mir_server/Gateway/srvlib/include/net/net_session.h

90 lines
1.7 KiB
C
Raw Normal View History

2025-01-09 17:45:40 +08:00
#ifndef _CLIENT_CONNECTION_H_
#define _CLIENT_CONNECTION_H_
#include "server_def.h"
using namespace tick64;
using namespace container;
using namespace lock;
class NetSession : public WorkSocket
{
public:
typedef WorkSocket Inherited;
public:
NetSession(const char* name);
NetSession(SOCKET s, sockaddr_in* client_addr, const char* name);
virtual ~NetSession();
//<2F><>ȡ<EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>ַ<EFBFBD>Ͷ˿<CDB6>
inline sockaddr_in GetRemoteAddrIn()
{
return remote_addr_;
}
//<2F><>ȡ<EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
inline const char* GetRemoteHost()
{
return remote_host_;
}
//<2F><>ȡ<EFBFBD>ͻ<EFBFBD><CDBB>˶˿<CBB6>
inline int GetRemotePort()
{
return remote_port_;
}
inline bool GetActiveKeepAlive()
{
return keep_alive_;
}
inline void SetActiveKeepAlive(const bool act)
{
keep_alive_ = act;
}
inline void Run()
{
SingleRun();
}
inline bool registed()
{
return registed_;
}
inline int getClientServerIndex()
{
return client_srv_idx_;
}
inline const char* getClientName()
{
return client_name_;
}
inline int getClientType()
{
return client_type_;
}
protected:
void SetClientSocket(SOCKET sock, sockaddr_in* client_addr);
/* <20><>֤<EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ч
*@return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>true<EFBFBD><EFBFBD>ʾע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>false<EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
virtual bool OnValidateRegData(const SrvDef::PSERVER_REGDATA regdata) = 0;
void Disconnected();
virtual bool PreProcess(DataPacketReader* data_buf);
protected:
sockaddr_in remote_addr_; //<2F>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>ַ<EFBFBD>Ͷ˿<CDB6>
char remote_host_[128]; //<2F>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int remote_port_; //<2F>ͻ<EFBFBD><CDBB>˶˿<CBB6>
bool keep_alive_;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB>˷<EFBFBD><CBB7>ͱ<EFBFBD><CDB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>
private:
bool registed_; //<2F>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int client_srv_idx_; //<2F>ͻ<EFBFBD><CDBB>˵ķ<CBB5><C4B7><EFBFBD><EFBFBD><EFBFBD>ID
char client_name_[40]; //<2F>ͻ<EFBFBD><CDBB><EFBFBD>ע<EFBFBD><D7A2><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int client_type_; //<2F>ͻ<EFBFBD><CDBB><EFBFBD>ע<EFBFBD><D7A2><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
#endif