DDNet documentation
Loading...
Searching...
No Matches
CNetServer Class Reference

#include <network.h>

Collaboration diagram for CNetServer:
[legend]

Classes

struct  CSlot
struct  CSpamConn

Public Member Functions

int SetCallbacks (NETFUNC_NEWCLIENT pfnNewClient, NETFUNC_DELCLIENT pfnDelClient, void *pUser)
int SetCallbacks (NETFUNC_NEWCLIENT pfnNewClient, NETFUNC_NEWCLIENT_NOAUTH pfnNewClientNoAuth, NETFUNC_CLIENTREJOIN pfnClientRejoin, NETFUNC_DELCLIENT pfnDelClient, void *pUser)
bool Open (NETADDR BindAddr, CNetBan *pNetBan, int MaxClients, int MaxClientsPerIp)
void Close ()
int Recv (CNetChunk *pChunk, SECURITY_TOKEN *pResponseToken)
int Send (CNetChunk *pChunk)
void Update ()
void BeginFlushBatch ()
void EndFlushBatch ()
void Drop (int ClientId, const char *pReason)
const NETADDR * ClientAddr (int ClientId) const
const std::array< char, NETADDR_MAXSTRSIZE > & ClientAddrString (int ClientId, bool IncludePort) const
bool HasSecurityToken (int ClientId) const
NETADDR Address () const
NETSOCKET Socket () const
CNetBan * NetBan () const
int NetType () const
int MaxClients () const
void SendTokenSixup (NETADDR &Addr, SECURITY_TOKEN Token)
void SetMaxClientsPerIp (int Max)
bool HasErrored (int ClientId)
void ResumeOldConnection (int ClientId, int OrigId)
void IgnoreTimeouts (int ClientId)
void ResetErrorString (int ClientId)
const char * ErrorString (int ClientId)
SECURITY_TOKEN GetGlobalToken ()
SECURITY_TOKEN GetToken (const NETADDR &Addr)
SECURITY_TOKEN GetVanillaToken (const NETADDR &Addr)

Private Member Functions

void OnTokenCtrlMsg (NETADDR &Addr, int ControlMsg, const CNetPacketConstruct &Packet, int Slot)
int OnSixupCtrlMsg (NETADDR &Addr, CNetChunk *pChunk, int ControlMsg, const CNetPacketConstruct &Packet, SECURITY_TOKEN &ResponseToken, SECURITY_TOKEN Token, int Slot)
void OnPreConnMsg (NETADDR &Addr, CNetPacketConstruct &Packet, int Slot)
bool ClientExists (const NETADDR &Addr)
int GetClientSlot (const NETADDR &Addr)
void SendControl (NETADDR &Addr, int ControlMsg, const void *pExtra, int ExtraSize, SECURITY_TOKEN SecurityToken)
int TryAcceptClient (NETADDR &Addr, SECURITY_TOKEN SecurityToken, int Slot, bool VanillaAuth=false, bool Sixup=false, SECURITY_TOKEN Token=0)
int NumClientsWithAddr (NETADDR Addr)
bool Connlimit (NETADDR Addr)
void SendMsgs (NETADDR &Addr, const CPacker **ppMsgs, int Num)

Private Attributes

NETADDR m_Address
NETSOCKET m_Socket
CNetBan * m_pNetBan
CSlot m_aSlots [NET_MAX_CLIENTS]
int m_MaxClients = NET_MAX_CLIENTS
int m_MaxClientsPerIp
bool m_FlushBatch = false
bool m_aFlushPending [NET_MAX_CLIENTS] = {}
NETFUNC_NEWCLIENT m_pfnNewClient
NETFUNC_NEWCLIENT_NOAUTH m_pfnNewClientNoAuth
NETFUNC_DELCLIENT m_pfnDelClient
NETFUNC_CLIENTREJOIN m_pfnClientRejoin
void * m_pUser
unsigned char m_aSecurityTokenSeed [16]
int64_t m_VConnFirst
int m_VConnNum
int m_NumRecvPackets = 0
int64_t m_BudgetStart = 0
int m_NumPreConnDecompress = 0
int m_NumBanReplies = 0
CSpamConn m_aSpamConns [NET_CONNLIMIT_IPS] = {}
CPacketChunkUnpacker m_PacketChunkUnpacker
CNetPacketConstruct m_RecvBuffer

Member Function Documentation

◆ Address()

NETADDR CNetServer::Address ( ) const
inline

◆ BeginFlushBatch()

void CNetServer::BeginFlushBatch ( )
inline

◆ ClientAddr()

const NETADDR * CNetServer::ClientAddr ( int ClientId) const
inline

◆ ClientAddrString()

const std::array< char, NETADDR_MAXSTRSIZE > & CNetServer::ClientAddrString ( int ClientId,
bool IncludePort ) const
inline

◆ ClientExists()

bool CNetServer::ClientExists ( const NETADDR & Addr)
inlineprivate

◆ Close()

void CNetServer::Close ( )

◆ Connlimit()

bool CNetServer::Connlimit ( NETADDR Addr)
private

◆ Drop()

void CNetServer::Drop ( int ClientId,
const char * pReason )

◆ EndFlushBatch()

void CNetServer::EndFlushBatch ( )

◆ ErrorString()

const char * CNetServer::ErrorString ( int ClientId)

◆ GetClientSlot()

int CNetServer::GetClientSlot ( const NETADDR & Addr)
private

◆ GetGlobalToken()

SECURITY_TOKEN CNetServer::GetGlobalToken ( )

◆ GetToken()

SECURITY_TOKEN CNetServer::GetToken ( const NETADDR & Addr)

◆ GetVanillaToken()

SECURITY_TOKEN CNetServer::GetVanillaToken ( const NETADDR & Addr)

◆ HasErrored()

bool CNetServer::HasErrored ( int ClientId)

◆ HasSecurityToken()

bool CNetServer::HasSecurityToken ( int ClientId) const
inline

◆ IgnoreTimeouts()

void CNetServer::IgnoreTimeouts ( int ClientId)

◆ MaxClients()

int CNetServer::MaxClients ( ) const
inline

◆ NetBan()

CNetBan * CNetServer::NetBan ( ) const
inline

◆ NetType()

int CNetServer::NetType ( ) const
inline

◆ NumClientsWithAddr()

int CNetServer::NumClientsWithAddr ( NETADDR Addr)
private

◆ OnPreConnMsg()

void CNetServer::OnPreConnMsg ( NETADDR & Addr,
CNetPacketConstruct & Packet,
int Slot )
private

◆ OnSixupCtrlMsg()

int CNetServer::OnSixupCtrlMsg ( NETADDR & Addr,
CNetChunk * pChunk,
int ControlMsg,
const CNetPacketConstruct & Packet,
SECURITY_TOKEN & ResponseToken,
SECURITY_TOKEN Token,
int Slot )
private

◆ OnTokenCtrlMsg()

void CNetServer::OnTokenCtrlMsg ( NETADDR & Addr,
int ControlMsg,
const CNetPacketConstruct & Packet,
int Slot )
private

◆ Open()

bool CNetServer::Open ( NETADDR BindAddr,
CNetBan * pNetBan,
int MaxClients,
int MaxClientsPerIp )

◆ Recv()

int CNetServer::Recv ( CNetChunk * pChunk,
SECURITY_TOKEN * pResponseToken )

◆ ResetErrorString()

void CNetServer::ResetErrorString ( int ClientId)

◆ ResumeOldConnection()

void CNetServer::ResumeOldConnection ( int ClientId,
int OrigId )

◆ Send()

int CNetServer::Send ( CNetChunk * pChunk)

◆ SendControl()

void CNetServer::SendControl ( NETADDR & Addr,
int ControlMsg,
const void * pExtra,
int ExtraSize,
SECURITY_TOKEN SecurityToken )
private

◆ SendMsgs()

void CNetServer::SendMsgs ( NETADDR & Addr,
const CPacker ** ppMsgs,
int Num )
private

◆ SendTokenSixup()

void CNetServer::SendTokenSixup ( NETADDR & Addr,
SECURITY_TOKEN Token )

◆ SetCallbacks() [1/2]

int CNetServer::SetCallbacks ( NETFUNC_NEWCLIENT pfnNewClient,
NETFUNC_DELCLIENT pfnDelClient,
void * pUser )

◆ SetCallbacks() [2/2]

int CNetServer::SetCallbacks ( NETFUNC_NEWCLIENT pfnNewClient,
NETFUNC_NEWCLIENT_NOAUTH pfnNewClientNoAuth,
NETFUNC_CLIENTREJOIN pfnClientRejoin,
NETFUNC_DELCLIENT pfnDelClient,
void * pUser )

◆ SetMaxClientsPerIp()

void CNetServer::SetMaxClientsPerIp ( int Max)

◆ Socket()

NETSOCKET CNetServer::Socket ( ) const
inline

◆ TryAcceptClient()

int CNetServer::TryAcceptClient ( NETADDR & Addr,
SECURITY_TOKEN SecurityToken,
int Slot,
bool VanillaAuth = false,
bool Sixup = false,
SECURITY_TOKEN Token = 0 )
private

◆ Update()

void CNetServer::Update ( )

Member Data Documentation

◆ m_Address

NETADDR CNetServer::m_Address
private

◆ m_aFlushPending

bool CNetServer::m_aFlushPending[NET_MAX_CLIENTS] = {}
private

◆ m_aSecurityTokenSeed

unsigned char CNetServer::m_aSecurityTokenSeed[16]
private

◆ m_aSlots

CSlot CNetServer::m_aSlots[NET_MAX_CLIENTS]
private

◆ m_aSpamConns

CSpamConn CNetServer::m_aSpamConns[NET_CONNLIMIT_IPS] = {}
private

◆ m_BudgetStart

int64_t CNetServer::m_BudgetStart = 0
private

◆ m_FlushBatch

bool CNetServer::m_FlushBatch = false
private

◆ m_MaxClients

int CNetServer::m_MaxClients = NET_MAX_CLIENTS
private

◆ m_MaxClientsPerIp

int CNetServer::m_MaxClientsPerIp
private

◆ m_NumBanReplies

int CNetServer::m_NumBanReplies = 0
private

◆ m_NumPreConnDecompress

int CNetServer::m_NumPreConnDecompress = 0
private

◆ m_NumRecvPackets

int CNetServer::m_NumRecvPackets = 0
private

◆ m_PacketChunkUnpacker

CPacketChunkUnpacker CNetServer::m_PacketChunkUnpacker
private

◆ m_pfnClientRejoin

NETFUNC_CLIENTREJOIN CNetServer::m_pfnClientRejoin
private

◆ m_pfnDelClient

NETFUNC_DELCLIENT CNetServer::m_pfnDelClient
private

◆ m_pfnNewClient

NETFUNC_NEWCLIENT CNetServer::m_pfnNewClient
private

◆ m_pfnNewClientNoAuth

NETFUNC_NEWCLIENT_NOAUTH CNetServer::m_pfnNewClientNoAuth
private

◆ m_pNetBan

CNetBan* CNetServer::m_pNetBan
private

◆ m_pUser

void* CNetServer::m_pUser
private

◆ m_RecvBuffer

CNetPacketConstruct CNetServer::m_RecvBuffer
private

◆ m_Socket

NETSOCKET CNetServer::m_Socket
private

◆ m_VConnFirst

int64_t CNetServer::m_VConnFirst
private

◆ m_VConnNum

int CNetServer::m_VConnNum
private

The documentation for this class was generated from the following files: