steam relay networking
This commit is contained in:
@@ -12,13 +12,16 @@ public:
|
||||
virtual ~CLocalNetworkServer() override;
|
||||
|
||||
virtual void NetThink() override;
|
||||
virtual void SetCallback( NetCallbackFn fnCallback ) override;
|
||||
|
||||
virtual uint32_t BHasUpdates() override;
|
||||
virtual NetPacket_t RecievePacket() override;
|
||||
virtual NetPacket_t PeekPacket() override;
|
||||
|
||||
virtual NetPacket_t PeekPacket() override;
|
||||
virtual void SendPacket( NetPacket_t stPacket ) override;
|
||||
|
||||
virtual bool BIsActive() override;
|
||||
|
||||
virtual uint64_t GetSteamID() override;
|
||||
virtual const char *GetIP() override;
|
||||
virtual uint16_t GetPort() override;
|
||||
@@ -27,6 +30,7 @@ public:
|
||||
CUtlVector<NetPacket_t> m_packets;
|
||||
CUtlVector<NetPacket_t> m_clientPackets;
|
||||
CUtlVector<void*> m_freedPackets;
|
||||
NetCallbackFn m_fnCallback;
|
||||
const uint16_t m_uPort;
|
||||
};
|
||||
|
||||
@@ -41,16 +45,18 @@ CLocalNetworkServer::~CLocalNetworkServer()
|
||||
|
||||
}
|
||||
|
||||
void CLocalNetworkServer::SetCallback( NetCallbackFn fnCallback )
|
||||
{
|
||||
m_fnCallback = fnCallback;
|
||||
}
|
||||
|
||||
void CLocalNetworkServer::NetThink()
|
||||
{
|
||||
m_lock.Lock();
|
||||
for ( auto p: m_freedPackets)
|
||||
{
|
||||
V_free(p);
|
||||
}
|
||||
m_freedPackets = {};
|
||||
m_lock.Unlock();
|
||||
}
|
||||
|
||||
|
||||
@@ -61,23 +67,19 @@ uint32_t CLocalNetworkServer::BHasUpdates()
|
||||
|
||||
NetPacket_t CLocalNetworkServer::RecievePacket()
|
||||
{
|
||||
m_lock.Lock();
|
||||
if (!BHasUpdates())
|
||||
return {};
|
||||
NetPacket_t p = m_clientPackets[0];
|
||||
m_clientPackets.RemoveHead(1);
|
||||
m_freedPackets.AppendTail(p.pData);
|
||||
m_lock.Unlock();
|
||||
return p;
|
||||
}
|
||||
|
||||
NetPacket_t CLocalNetworkServer::PeekPacket()
|
||||
{
|
||||
m_lock.Lock();
|
||||
if (!BHasUpdates())
|
||||
return {};
|
||||
NetPacket_t p = m_clientPackets[0];
|
||||
m_lock.Unlock();
|
||||
return p;
|
||||
}
|
||||
|
||||
@@ -86,14 +88,17 @@ void CLocalNetworkServer::SendPacket( NetPacket_t stPacket )
|
||||
{
|
||||
NetPacket_t stSavedPacked;
|
||||
stSavedPacked.uSize = stPacket.uSize;
|
||||
stSavedPacked.m_uOwner = 0;
|
||||
stSavedPacked.pData = V_malloc(stPacket.uSize);
|
||||
V_memcpy(stSavedPacked.pData, stPacket.pData, stPacket.uSize);
|
||||
|
||||
m_lock.Lock();
|
||||
m_packets.AppendTail(stSavedPacked);
|
||||
m_lock.Unlock();
|
||||
}
|
||||
|
||||
bool CLocalNetworkServer::BIsActive()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
uint64_t CLocalNetworkServer::GetSteamID()
|
||||
{
|
||||
@@ -117,12 +122,15 @@ public:
|
||||
virtual ~CLocalNetworkClient() override;
|
||||
|
||||
virtual void NetThink() override;
|
||||
virtual void SetCallback( NetCallbackFn fnCallback ) override;
|
||||
|
||||
virtual uint32_t BHasUpdates() override;
|
||||
virtual NetPacket_t RecievePacket() override;
|
||||
virtual NetPacket_t PeekPacket() override;
|
||||
|
||||
virtual void SendPacket( NetPacket_t stPacket ) override;
|
||||
|
||||
virtual bool BIsActive() override;
|
||||
|
||||
virtual uint64_t GetSteamID() override;
|
||||
virtual const char *GetIP() override;
|
||||
@@ -131,6 +139,11 @@ public:
|
||||
CLocalNetworkServer *m_pServer;
|
||||
};
|
||||
|
||||
bool CLocalNetworkClient::BIsActive()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
CLocalNetworkClient::CLocalNetworkClient( uint16_t uPort )
|
||||
{
|
||||
m_pServer = s_pLocalServers[uPort];
|
||||
@@ -154,23 +167,19 @@ uint32_t CLocalNetworkClient::BHasUpdates()
|
||||
|
||||
NetPacket_t CLocalNetworkClient::RecievePacket()
|
||||
{
|
||||
m_pServer->m_lock.Lock();
|
||||
if (!BHasUpdates())
|
||||
return {};
|
||||
NetPacket_t p = m_pServer->m_packets[0];
|
||||
m_pServer->m_packets.RemoveHead(1);
|
||||
m_pServer->m_freedPackets.AppendTail(p.pData);
|
||||
m_pServer->m_lock.Unlock();
|
||||
return p;
|
||||
}
|
||||
|
||||
NetPacket_t CLocalNetworkClient::PeekPacket()
|
||||
{
|
||||
m_pServer->m_lock.Lock();
|
||||
if (!BHasUpdates())
|
||||
return {};
|
||||
NetPacket_t p = m_pServer->m_packets[0];
|
||||
m_pServer->m_lock.Unlock();
|
||||
return p;
|
||||
}
|
||||
|
||||
@@ -179,12 +188,15 @@ void CLocalNetworkClient::SendPacket( NetPacket_t stPacket )
|
||||
{
|
||||
NetPacket_t stSavedPacked;
|
||||
stSavedPacked.uSize = stPacket.uSize;
|
||||
stSavedPacked.m_uOwner = 0;
|
||||
stSavedPacked.pData = V_malloc(stPacket.uSize);
|
||||
V_memcpy(stSavedPacked.pData, stPacket.pData, stPacket.uSize);
|
||||
|
||||
m_pServer->m_lock.Lock();
|
||||
m_pServer->m_clientPackets.AppendTail(stSavedPacked);
|
||||
m_pServer->m_lock.Unlock();
|
||||
}
|
||||
|
||||
void CLocalNetworkClient::SetCallback( NetCallbackFn fnCallback )
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user