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

Function queryMasterServer

Engine/source/app/net/serverQuery.cpp:497–560  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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

Callers 1

DefineConsoleFunctionFunction · 0.85

Calls 14

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

Tested by

no test coverage detected