Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
79 lines
2.2 KiB
C++
79 lines
2.2 KiB
C++
#ifndef _GAMA_CLIENT_SESSION_H_
|
|
#define _GAMA_CLIENT_SESSION_H_
|
|
|
|
#include <winsock2.h>
|
|
#include <windows.h>
|
|
|
|
#include <Network/Address/INET_Addr.h>
|
|
#include "NetworkMsgBlock.h"
|
|
|
|
namespace ClientNet
|
|
{
|
|
// forward decl;
|
|
class CSessionMgr;
|
|
class CEventHandler;
|
|
|
|
class CSession
|
|
{
|
|
public:
|
|
|
|
enum
|
|
{
|
|
MAX_SESSION_NAME = 16
|
|
};
|
|
|
|
CSession(DWORD dwSessionID, CEventHandler* lpEventHandler);
|
|
virtual ~CSession();
|
|
|
|
DWORD GetSessionID() const { return m_dwSessionID; }
|
|
SOCKET GetSocket() const { return m_hSocket; }
|
|
WSAEVENT GetEvent() const { return m_hEvent; }
|
|
INET_Addr& GetPeerAddress() { return m_PeerAddress; }
|
|
|
|
CEventHandler* GetEventHandler() { return m_lpEventHandler; }
|
|
void SetEventHandler(CEventHandler* lpEventHandler) { m_lpEventHandler = lpEventHandler; }
|
|
|
|
bool IsValid();
|
|
|
|
// Active Mode
|
|
int Open(const char* addr, unsigned short port) { return Open(INET_Addr(addr, port)); }
|
|
|
|
virtual int Open(INET_Addr& addr) = 0; // Active Socket
|
|
virtual int Open(INET_Addr& addr, SOCKET hSocket) = 0; // Passive Socket
|
|
virtual int Recv() = 0;
|
|
virtual int Send(unsigned long dwMaxSendCount) = 0;
|
|
|
|
int Send() { return Send(m_dwMaxSendNumPerPulse); }
|
|
void SendPending(CNetworkMsgBlock* lpMsgBlock) { m_SendQueue.Enqueue(lpMsgBlock); Send(1); }
|
|
|
|
int Shutdown(int how);
|
|
int Close();
|
|
|
|
bool IsShutdownCalled() const;
|
|
bool IsCloseCalled() const;
|
|
|
|
const char* GetSessionName() { return m_szSessionName; }
|
|
|
|
protected:
|
|
|
|
DWORD m_dwSessionID;
|
|
|
|
SOCKET m_hSocket;
|
|
WSAEVENT m_hEvent;
|
|
CEventHandler* m_lpEventHandler;
|
|
|
|
unsigned long m_dwMaxRecvNumPerPulse;
|
|
unsigned long m_dwMaxSendNumPerPulse;
|
|
unsigned long m_dwFlags;
|
|
|
|
INET_Addr m_PeerAddress;
|
|
|
|
CNetworkMsgQueue m_SendQueue;
|
|
CNetworkMsgBlock m_Received;
|
|
|
|
char m_szSessionName[MAX_SESSION_NAME];
|
|
};
|
|
}
|
|
|
|
|
|
#endif |