static void SPAuthCheck_DNSCompletion(AsyncOp *theOp, SPAuthCheckPrv *theCheck) { if(!theOp->Succeeded()) { theCheck->mStatus = theOp->GetStatus(); return; } // Step 2, AuthServer lookup ServerContextPtr aDirServers = new ServerContext; WONTypes::StringList::iterator anItr; for(anItr = theCheck->mDirServers.begin(); anItr != theCheck->mDirServers.end(); ++anItr) aDirServers->AddAddress(*anItr); GetMultiDirOpPtr anOp = new GetMultiDirOp(aDirServers); anOp->SetFlags(DIR_GF_DECOMPSERVICES | DIR_GF_SERVADDNETADDR); anOp->AddPath(L"/TitanServers/Auth"); anOp->SetFlags(DIR_GF_DECOMPROOT | DIR_GF_ADDDODATA); if(theCheck->mCDKey.IsForceCheck()) anOp->AddDataType("_SPF"); else anOp->AddDataType("_SP"); anOp->AddPath(theCheck->mProductDir); SPAuthCheck_RunOp(anOp,theCheck,SPAuthCheck_GetDirCompletion); }
ServerContextPtr WONGetCurrentServerContext(const TWONServerList &lServers) { // Get the server list ServerContextPtr cDirContext = new ServerContext; TWONServerList::const_iterator iCurDirServer = lServers.begin(); for (; iCurDirServer != g_lWONServerList.end(); ++iCurDirServer) { cDirContext->AddAddress(IPAddr(*iCurDirServer)); } return cDirContext; }
ServerContextPtr MultiPingOp::GetServerContext(bool discardNonResponsiveServers) { ServerContextPtr aContext = new ServerContext; MultiPingList::iterator anItr = mFinishedList.begin(); while(anItr!=mFinishedList.end()) { MultiPingStruct *aStruct = *anItr; if(aStruct->mPingTime!=-1 || !discardNonResponsiveServers) aContext->AddAddress(aStruct->mAddr); ++anItr; } aContext->SetNeedShuffle(false); return aContext; }