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>
This commit is contained in:
@@ -0,0 +1,357 @@
|
||||
/*
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// UDPList
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
#include "stdafx.h"
|
||||
#include "UDPList.h"
|
||||
|
||||
UDPList::UDPList(void)
|
||||
{
|
||||
}
|
||||
|
||||
UDPList::~UDPList(void)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
DWORD UDPList::InsertIntoAddressList(DWORD CharID_In, const SOCKADDR_IN& PubAddress_In,
|
||||
const SOCKADDR_IN& PriAddress_In, PEERTYPE PeerType_In)
|
||||
{
|
||||
LPUDP_LIST lpList = SearchFromAddressList(CharID_In);
|
||||
if(lpList != NULL)
|
||||
{
|
||||
lpList->CharID = CharID_In;
|
||||
lpList->PublicAddress = PubAddress_In;
|
||||
lpList->PrivateAddress = PriAddress_In;
|
||||
lpList->PeerType = PeerType_In;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
lpList = Create();
|
||||
if(lpList != NULL)
|
||||
{
|
||||
lpList->CharID = CharID_In;
|
||||
lpList->PublicAddress = PubAddress_In;
|
||||
lpList->PrivateAddress = PriAddress_In;
|
||||
lpList->PeerType = PeerType_In;
|
||||
|
||||
InsertToList(lpList);
|
||||
|
||||
return 2;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool UDPList::DeleteFromAddressList(DWORD CharID_In)
|
||||
{
|
||||
LPUDP_LIST lpList = SearchFromAddressList(CharID_In);
|
||||
if(lpList != NULL)
|
||||
{
|
||||
DeleteFromList(lpList);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool UDPList::DeleteFromAddressList(const SOCKADDR_IN& Address_In)
|
||||
{
|
||||
LPUDP_LIST lpList = SearchFromAddressList(Address_In);
|
||||
if(lpList != NULL)
|
||||
{
|
||||
DeleteFromList(lpList);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
LPUDP_LIST UDPList::SearchFromAddressList(DWORD CharID_In)
|
||||
{
|
||||
LPUDP_LIST lpList;
|
||||
|
||||
lpList = m_pListHead;
|
||||
while(lpList)
|
||||
{
|
||||
if(lpList->CharID == CharID_In)
|
||||
return lpList;
|
||||
|
||||
lpList = lpList->pNext;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
LPUDP_LIST UDPList::SearchFromAddressList(const SOCKADDR_IN& Address_In)
|
||||
{
|
||||
LPUDP_LIST lpList;
|
||||
|
||||
lpList = m_pListHead;
|
||||
while(lpList)
|
||||
{
|
||||
if(lpList->PrivateAddress.sin_addr.S_un.S_addr == Address_In.sin_addr.S_un.S_addr && lpList->PrivateAddress.sin_port == Address_In.sin_port)
|
||||
return lpList;
|
||||
|
||||
if(lpList->PublicAddress.sin_addr.S_un.S_addr == Address_In.sin_addr.S_un.S_addr && lpList->PublicAddress.sin_port == Address_In.sin_port)
|
||||
return lpList;
|
||||
|
||||
lpList = lpList->pNext;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// UDPList
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
#include "stdafx.h"
|
||||
#include "UDPList.h"
|
||||
#include "GMMemory.h"
|
||||
|
||||
UDPList::UDPList(void)
|
||||
: m_nMaxGarbageStackLength(0)
|
||||
{
|
||||
}
|
||||
|
||||
UDPList::~UDPList(void)
|
||||
{
|
||||
DeleteAllFromList();
|
||||
ClearGarbageStack();
|
||||
}
|
||||
|
||||
DWORD UDPList::InsertIntoAddressList(DWORD CharID_In, const SOCKADDR_IN& PubAddress_In,
|
||||
const SOCKADDR_IN& PriAddress_In, PEERTYPE PeerType_In)
|
||||
{
|
||||
LPUDP_LIST lpList = SearchFromAddressList(CharID_In);
|
||||
|
||||
if(NULL == lpList)
|
||||
{
|
||||
if(m_GarbageList.empty())
|
||||
{
|
||||
lpList = new UDP_LIST;
|
||||
}
|
||||
else
|
||||
{
|
||||
lpList = m_GarbageList.front();
|
||||
m_GarbageList.pop_front();
|
||||
}
|
||||
|
||||
if(lpList != NULL)
|
||||
{
|
||||
lpList->CharID = CharID_In;
|
||||
lpList->PublicAddress = PubAddress_In;
|
||||
lpList->PrivateAddress = PriAddress_In;
|
||||
lpList->PeerType = PeerType_In;
|
||||
lpList->MoveTick = 0;
|
||||
|
||||
m_UDP_List.push_back(lpList);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lpList->PublicAddress = PubAddress_In;
|
||||
lpList->PrivateAddress = PriAddress_In;
|
||||
lpList->PeerType = PeerType_In;
|
||||
lpList->MoveTick = 0;
|
||||
return 2;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
DWORD UDPList::InsertIntoAddressList(UDP_LIST* lpUDP_List)
|
||||
{
|
||||
LPUDP_LIST lpList = SearchFromAddressList(lpUDP_List->CharID);
|
||||
|
||||
if(NULL == lpList)
|
||||
{
|
||||
if(m_GarbageList.empty())
|
||||
{
|
||||
lpList = new UDP_LIST;
|
||||
}
|
||||
else
|
||||
{
|
||||
lpList = m_GarbageList.front();
|
||||
m_GarbageList.pop_front();
|
||||
}
|
||||
|
||||
if(lpList != NULL)
|
||||
{
|
||||
*lpList = *lpUDP_List;
|
||||
m_UDP_List.push_back(lpList);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
*lpList = *lpUDP_List;
|
||||
return 2;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool UDPList::DeleteFromAddressList(DWORD CharID_In)
|
||||
{
|
||||
STDLIST::iterator pos = m_UDP_List.begin();
|
||||
STDLIST::iterator end = m_UDP_List.end();
|
||||
|
||||
for(;pos != end; ++pos)
|
||||
{
|
||||
LPUDP_LIST lpList = (*pos);
|
||||
if(lpList->CharID == CharID_In)
|
||||
{
|
||||
m_UDP_List.erase(pos);
|
||||
|
||||
if(m_GarbageList.size() < m_nMaxGarbageStackLength)
|
||||
{
|
||||
m_GarbageList.push_back(lpList);
|
||||
}
|
||||
else
|
||||
{
|
||||
delete lpList;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool UDPList::DeleteFromAddressList(const SOCKADDR_IN& Address_In)
|
||||
{
|
||||
STDLIST::iterator pos = m_UDP_List.begin();
|
||||
STDLIST::iterator end = m_UDP_List.end();
|
||||
|
||||
for(;pos != end; ++pos)
|
||||
{
|
||||
LPUDP_LIST lpList = (*pos);
|
||||
bool bDelete = false;
|
||||
|
||||
if(lpList->PrivateAddress.sin_addr.S_un.S_addr == Address_In.sin_addr.S_un.S_addr &&
|
||||
lpList->PrivateAddress.sin_port == Address_In.sin_port)
|
||||
{
|
||||
bDelete = true;
|
||||
}
|
||||
|
||||
if(lpList->PublicAddress.sin_addr.S_un.S_addr == Address_In.sin_addr.S_un.S_addr &&
|
||||
lpList->PublicAddress.sin_port == Address_In.sin_port)
|
||||
{
|
||||
bDelete = true;
|
||||
}
|
||||
|
||||
if(bDelete)
|
||||
{
|
||||
m_UDP_List.erase(pos);
|
||||
|
||||
if(m_GarbageList.size() < m_nMaxGarbageStackLength)
|
||||
{
|
||||
m_GarbageList.push_back(lpList);
|
||||
}
|
||||
else
|
||||
{
|
||||
delete lpList;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
LPUDP_LIST UDPList::SearchFromAddressList(DWORD CharID_In)
|
||||
{
|
||||
STDLIST::iterator pos = m_UDP_List.begin();
|
||||
STDLIST::iterator end = m_UDP_List.end();
|
||||
|
||||
for(;pos != end; ++pos)
|
||||
{
|
||||
LPUDP_LIST lpList = (*pos);
|
||||
if(lpList->CharID == CharID_In)
|
||||
{
|
||||
return lpList;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
LPUDP_LIST UDPList::SearchFromAddressList(const SOCKADDR_IN& Address_In)
|
||||
{
|
||||
STDLIST::iterator pos = m_UDP_List.begin();
|
||||
STDLIST::iterator end = m_UDP_List.end();
|
||||
|
||||
for(;pos != end; ++pos)
|
||||
{
|
||||
LPUDP_LIST lpList = (*pos);
|
||||
|
||||
if(lpList->PrivateAddress.sin_addr.S_un.S_addr == Address_In.sin_addr.S_un.S_addr &&
|
||||
lpList->PrivateAddress.sin_port == Address_In.sin_port)
|
||||
{
|
||||
return lpList;
|
||||
}
|
||||
|
||||
if(lpList->PublicAddress.sin_addr.S_un.S_addr == Address_In.sin_addr.S_un.S_addr &&
|
||||
lpList->PublicAddress.sin_port == Address_In.sin_port)
|
||||
{
|
||||
return lpList;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
void UDPList::DeleteAllFromList()
|
||||
{
|
||||
STDLIST::iterator pos = m_UDP_List.begin();
|
||||
STDLIST::iterator end = m_UDP_List.end();
|
||||
|
||||
for(;pos != end; ++pos)
|
||||
{
|
||||
LPUDP_LIST lpList = (*pos);
|
||||
|
||||
if(m_GarbageList.size() < m_nMaxGarbageStackLength)
|
||||
{
|
||||
m_GarbageList.push_back(lpList);
|
||||
}
|
||||
else
|
||||
{
|
||||
delete lpList;
|
||||
}
|
||||
}
|
||||
|
||||
m_UDP_List.clear();
|
||||
}
|
||||
|
||||
|
||||
void UDPList::SetGarbageStackLength(size_t StackLength_In)
|
||||
{
|
||||
m_nMaxGarbageStackLength = StackLength_In;
|
||||
}
|
||||
|
||||
void UDPList::ClearGarbageStack(void)
|
||||
{
|
||||
STDLIST::iterator pos = m_GarbageList.begin();
|
||||
STDLIST::iterator end = m_GarbageList.end();
|
||||
|
||||
for(;pos != end; ++pos)
|
||||
{
|
||||
delete (*pos);
|
||||
}
|
||||
|
||||
m_GarbageList.clear();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user