Files
LGram16 dd97ddec92 Restructure repository to include all source folders
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>
2025-11-29 20:17:20 +09:00

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