Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================
#include "MasterMsgHandler.h"
#include "IGameList.h"
#include "serverpage.h"
#include <VGUI_Controls.h>
#include <VGUI_IVGui.h>
//-----------------------------------------------------------------------------
// Purpose: Constructor
//-----------------------------------------------------------------------------
CMasterMsgHandler::CMasterMsgHandler( IGameList *baseobject, HANDLERTYPE type, void *typeinfo /*= NULL*/ ) : CMsgHandler( type, typeinfo ) { m_pGameList = baseobject; }
//-----------------------------------------------------------------------------
// Purpose: Process cracked message
//-----------------------------------------------------------------------------
bool CMasterMsgHandler::Process( netadr_t *from, CMsgBuffer *msg ) { // Skip the control character
msg->ReadByte(); // Skip the return character
msg->ReadByte();
// Get the batch ID
int unique = msg->ReadLong();
// Remainder of message length is 6 byte IP addresses
int nNumAddresses = msg->GetCurSize() - msg->GetReadCount(); assert( !( nNumAddresses % 6 ) ); // Each address is 6 bytes long
nNumAddresses /= 6;
while (nNumAddresses-- > 0) { serveritem_t server; memset(&server, 0, sizeof(server)); for (int i = 0; i < 4; i++) { server.ip[i] = msg->ReadByte(); } server.port = msg->ReadShort(); server.port = (server.port & 0xff) << 8 | (server.port & 0xff00) >> 8; // roll your own ntohs
server.received = 0; server.listEntry = NULL; server.doNotRefresh = false; server.hadSuccessfulResponse = false; server.map[0] = 0; server.gameDir[0] = 0;
m_pGameList->AddNewServer(server); }
if (!unique) { m_pGameList->ListReceived(false, 0); } else { // wait until we've refreshed the list before getting next batch of servers
m_pGameList->ListReceived(true, unique); }
return true; }
|