MCPcopy Create free account
hub / github.com/TorqueGameEngines/Torque3D / queryMasterServer

Function queryMasterServer

Engine/source/app/net/serverQuery.cpp:496–561  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

494//-----------------------------------------------------------------------------
495
496void queryMasterServer(U8 flags, const char* gameType, const char* missionType,
497 U8 minPlayers, U8 maxPlayers, U8 maxBots, U32 regionMask, U32 maxPing,
498 U16 minCPU, U8 filterFlags, U8 buddyCount, U32* buddyList )
499{
500 // Reset the list packet flag:
501 gGotFirstListPacket = false;
502 sgServerQueryActive = true;
503
504 Con::executef( "onServerQueryStatus", "start", "Querying master server", "0");
505
506 if ( buddyCount == 0 )
507 {
508 sActiveFilter.type = ServerFilter::Normal;
509
510 // Update the active filter:
511 if ( !sActiveFilter.gameType || String::compare( sActiveFilter.gameType, gameType ) != 0 )
512 {
513 dsize_t gameTypeLen = dStrlen(gameType) + 1;
514 sActiveFilter.gameType = (char*) dRealloc( sActiveFilter.gameType, gameTypeLen );
515 dStrcpy( sActiveFilter.gameType, gameType, gameTypeLen );
516 }
517
518 if ( !sActiveFilter.missionType || String::compare( sActiveFilter.missionType, missionType ) != 0 )
519 {
520 dsize_t missionTypeLen = dStrlen(missionType) + 1;
521 sActiveFilter.missionType = (char*) dRealloc( sActiveFilter.missionType, missionTypeLen );
522 dStrcpy( sActiveFilter.missionType, missionType, missionTypeLen );
523 }
524
525 sActiveFilter.queryFlags = flags | ServerFilter::NewStyleResponse;
526 sActiveFilter.minPlayers = minPlayers;
527 sActiveFilter.maxPlayers = maxPlayers;
528 sActiveFilter.maxBots = maxBots;
529 sActiveFilter.regionMask = regionMask;
530 sActiveFilter.maxPing = maxPing;
531 sActiveFilter.minCPU = minCPU;
532 sActiveFilter.filterFlags = filterFlags;
533 sActiveFilter.buddyCount = buddyCount;
534 dFree( sActiveFilter.buddyList );
535 sActiveFilter.buddyList = NULL;
536 }
537 else
538 {
539 sActiveFilter.type = ServerFilter::Buddy;
540 sActiveFilter.buddyCount = buddyCount;
541 sActiveFilter.buddyList = (U32*) dRealloc( sActiveFilter.buddyList, buddyCount * 4 );
542 sActiveFilter.queryFlags = ServerFilter::NewStyleResponse;
543 dMemcpy( sActiveFilter.buddyList, buddyList, buddyCount * 4 );
544 clearServerList();
545 }
546
547 // Pick a random master server from the list:
548 gMasterServerList.clear();
549 Vector<MasterInfo> *masterList = getMasterServerList();
550 for ( U32 i = 0; i < masterList->size(); i++ )
551 gMasterServerList.push_back( (*masterList)[i] );
552
553 // Clear the master server ping:

Callers 1

DefineEngineFunctionFunction · 0.85

Calls 14

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

Tested by

no test coverage detected