void UDPProxyCoordinator::ForwardingRequest::OrderRemainingServersToTry(void) { DataStructures::Multilist<ML_ORDERED_LIST,UDPProxyCoordinator::ServerWithPing,unsigned short> swpList; swpList.SetSortOrder(true); if (sourceServerPings.GetSize()==0 && targetServerPings.GetSize()==0) return; DataStructures::DefaultIndexType idx; UDPProxyCoordinator::ServerWithPing swp; for (idx=0; idx < remainingServersToTry.GetSize(); idx++) { swp.serverAddress=remainingServersToTry[idx]; swp.ping=0; if (sourceServerPings.GetSize()) swp.ping+=(unsigned short) sourceServerPings[idx].ping; else swp.ping+=(unsigned short) DEFAULT_CLIENT_UNRESPONSIVE_PING_TIME; if (targetServerPings.GetSize()) swp.ping+=(unsigned short) targetServerPings[idx].ping; else swp.ping+=(unsigned short) DEFAULT_CLIENT_UNRESPONSIVE_PING_TIME; swpList.Push(swp, swp.ping, _FILE_AND_LINE_); } remainingServersToTry.Clear(true, _FILE_AND_LINE_ ); for (idx=0; idx < swpList.GetSize(); idx++) { remainingServersToTry.Push(swpList[idx].serverAddress, _FILE_AND_LINE_ ); } }