CServerS* CMasterGameServer::GetLeastUsedServer(EGBGameRegion region) { CServerS* selected = NULL; int minGames = 999; // search for server with maximum available users for(TSupersList::iterator it = supers_.begin(); it != supers_.end(); ++it) { CServerS* super = it->second; // filter our supervisors if region is specified if(region != GBNET_REGION_Unknown && super->region_ != region) continue; if(super->GetExpectedGames() >= super->maxGames_) continue; if(super->GetExpectedGames() < minGames) { selected = super; minGames = super->GetExpectedGames(); } } return selected; }