MCPcopy Create free account
hub / github.com/GarageGames/Torque2D / queryMasterServer

Function queryMasterServer

engine/source/network/serverQuery.cc:431–499  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

429//-----------------------------------------------------------------------------
430
431void queryMasterServer(U8 flags, const char* gameType, const char* missionType,
432 U8 minPlayers, U8 maxPlayers, U8 maxBots, U32 regionMask, U32 maxPing,
433 U16 minCPU, U8 filterFlags, U8 buddyCount, U32* buddyList )
434{
435 // Reset the list packet flag:
436 gGotFirstListPacket = false;
437 sgServerQueryActive = true;
438 clearServerList();
439
440 Con::executef( 4, "onServerQueryStatus", "start", "Querying master server", "0");
441
442 if ( buddyCount == 0 )
443 {
444 sActiveFilter.type = ServerFilter::Normal;
445
446 // Update the active filter:
447 if ( !sActiveFilter.gameType || dStrcmp( sActiveFilter.gameType, gameType ) != 0 )
448 {
449 sActiveFilter.gameType = (char*) dRealloc( sActiveFilter.gameType, dStrlen( gameType ) + 1 );
450 dStrcpy( sActiveFilter.gameType, gameType );
451 }
452
453 if ( !sActiveFilter.missionType || dStrcmp( sActiveFilter.missionType, missionType ) != 0 )
454 {
455 sActiveFilter.missionType = (char*) dRealloc( sActiveFilter.missionType, dStrlen( missionType ) + 1 );
456 dStrcpy( sActiveFilter.missionType, missionType );
457 }
458
459 sActiveFilter.queryFlags = flags | ServerFilter::NewStyleResponse;
460 sActiveFilter.minPlayers = minPlayers;
461 sActiveFilter.maxPlayers = maxPlayers;
462 sActiveFilter.maxBots = maxBots;
463 sActiveFilter.regionMask = regionMask;
464 sActiveFilter.maxPing = maxPing;
465 sActiveFilter.minCPU = minCPU;
466 sActiveFilter.filterFlags = filterFlags;
467 sActiveFilter.buddyCount = buddyCount;
468 dFree( sActiveFilter.buddyList );
469 sActiveFilter.buddyList = NULL;
470 }
471 else
472 {
473 sActiveFilter.type = ServerFilter::Buddy;
474 sActiveFilter.buddyCount = buddyCount;
475 sActiveFilter.buddyList = (U32*) dRealloc( sActiveFilter.buddyList, buddyCount * 4 );
476 sActiveFilter.queryFlags = ServerFilter::NewStyleResponse;
477 dMemcpy( sActiveFilter.buddyList, buddyList, buddyCount * 4 );
478 clearServerList();
479 }
480
481 // Pick a random master server from the list:
482 gMasterServerList.clear();
483 Vector<MasterInfo> *masterList = getMasterServerList();
484 for ( U32 i = 0; i < (U32)masterList->size(); i++ )
485 gMasterServerList.push_back( (*masterList)[i] );
486
487 // Clear the master server ping:
488 gMasterServerPing.time = 0;

Callers 1

Calls 14

clearServerListFunction · 0.85
executefFunction · 0.85
dFreeFunction · 0.85
getMasterServerListFunction · 0.85
pickMasterServerFunction · 0.85
errorfFunction · 0.85
processMasterServerQueryFunction · 0.85
dStrcmpFunction · 0.50
dStrlenFunction · 0.50
dStrcpyFunction · 0.50
dMemcpyFunction · 0.50
clearMethod · 0.45

Tested by

no test coverage detected