本文整理汇总了C++中CContact::GetDistance方法的典型用法代码示例。如果您正苦于以下问题:C++ CContact::GetDistance方法的具体用法?C++ CContact::GetDistance怎么用?C++ CContact::GetDistance使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CContact
的用法示例。
在下文中一共展示了CContact::GetDistance方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Process
//.........这里部分代码省略.........
if (m_tNextSelfLookup <= tNow)
{
CSearchManager::FindNode(m_pInstance->m_pPrefs->GetKadID(), true);
m_tNextSelfLookup = HR2S(4) + tNow;
}
if (m_tNextFindBuddy <= tNow)
{
m_pInstance->m_pPrefs->SetFindBuddy();
m_tNextFindBuddy = MIN2S(20) + tNow;
}
if (m_tExternPortLookup <= tNow && CUDPFirewallTester::IsFWCheckUDPRunning() && GetPrefs()->FindExternKadPort(false)){
// if our UDP firewallcheck is running and we don't know our external port, we send a request every 15 seconds
CContact* pContact = GetRoutingZone()->GetRandomContact(3, KADEMLIA_VERSION6_49aBETA);
if (pContact != NULL){
DEBUG_ONLY( DebugLog(_T("Requesting our external port from %s"), ipstr(ntohl(pContact->GetIPAddress()))) );
GetUDPListener()->SendNullPacket(KADEMLIA2_PING, pContact->GetIPAddress(), pContact->GetUDPPort(), pContact->GetUDPKey(), &pContact->GetClientID());
}
else
DEBUG_ONLY( DebugLogWarning(_T("No valid client for requesting external port available")) );
m_tExternPortLookup = 15 + tNow;
}
for (EventMap::const_iterator itEventMap = m_mapEvents.begin(); itEventMap != m_mapEvents.end(); ++itEventMap)
{
CRoutingZone* pZone = itEventMap->first;
if( bUpdateUserFile )
{
uTempUsers = pZone->EstimateCount();
if( uMaxUsers < uTempUsers )
uMaxUsers = uTempUsers;
}
if (m_tBigTimer <= tNow)
{
if( pZone->m_tNextBigTimer <= tNow )
{
if(pZone->OnBigTimer())
{
pZone->m_tNextBigTimer = HR2S(1) + tNow;
m_tBigTimer = SEC(10) + tNow;
}
}
else
{
if( uLastContact && ( (tNow - uLastContact) > (KADEMLIADISCONNECTDELAY-MIN2S(5))))
{
if(pZone->OnBigTimer())
{
pZone->m_tNextBigTimer = HR2S(1) + tNow;
m_tBigTimer = SEC(10) + tNow;
}
}
}
}
if (pZone->m_tNextSmallTimer <= tNow)
{
pZone->OnSmallTimer();
pZone->m_tNextSmallTimer = MIN2S(1) + tNow;
}
}
// This is a convenient place to add this, although not related to routing
if (m_tNextSearchJumpStart <= tNow)
{
CSearchManager::JumpStart();
m_tNextSearchJumpStart = SEARCH_JUMPSTART + tNow;
}
// Try to consolidate any zones that are close to empty.
if (m_tConsolidate <= tNow)
{
uint32_t uMergedCount = m_pInstance->m_pRoutingZone->Consolidate();
if(uMergedCount)
AddDebugLogLine(false, _T("Kad merged %u Zones"), uMergedCount);
m_tConsolidate = MIN2S(45) + tNow;
}
//Update user count only if changed.
if( bUpdateUserFile )
{
if( uMaxUsers != m_pInstance->m_pPrefs->GetKademliaUsers())
{
m_pInstance->m_pPrefs->SetKademliaUsers(uMaxUsers);
m_pInstance->m_pPrefs->SetKademliaFiles();
theApp.emuledlg->ShowUserCount();
}
}
if(!IsConnected() && !s_liBootstapList.IsEmpty()
&& (tNow - m_tBootstrap > 15 || (GetRoutingZone()->GetNumContacts() == 0 && tNow - m_tBootstrap >= 2)))
{
CContact* pContact = s_liBootstapList.RemoveHead();
m_tBootstrap = tNow;
DebugLog(_T("Trying to Bootstrap Kad from %s, Distance: %s, Version: %u, %u Contacts left"), ipstr(ntohl(pContact->GetIPAddress())), pContact->GetDistance().ToHexString(), pContact->GetVersion(), s_liBootstapList.GetCount());
m_pInstance->m_pUDPListener->Bootstrap(pContact->GetIPAddress(), pContact->GetUDPPort(), pContact->GetVersion() > 1, pContact->GetVersion(), &pContact->GetClientID());
delete pContact;
}
if (GetUDPListener() != NULL)
GetUDPListener()->ExpireClientSearch(); // function does only one compare in most cases, so no real need for a timer
}
示例2: Process
//.........这里部分代码省略.........
}
if (m_nextSelfLookup <= now) {
CSearchManager::FindNode(instance->m_prefs->GetKadID(), true);
m_nextSelfLookup = HR2S(4) + now;
}
if (m_nextFindBuddy <= now) {
instance->m_prefs->SetFindBuddy();
m_nextFindBuddy = MIN2S(20) + now;
}
if (m_externPortLookup <= now && CUDPFirewallTester::IsFWCheckUDPRunning() && GetPrefs()->FindExternKadPort(false)) {
// If our UDP firewallcheck is running and we don't know our external port, we send a request every 15 seconds
CContact *contact = GetRoutingZone()->GetRandomContact(3, 6);
if (contact != NULL) {
AddDebugLogLineN(logKadPrefs, wxT("Requesting our external port from ") + KadIPToString(contact->GetIPAddress()));
DebugSend(Kad2Ping, contact->GetIPAddress(), contact->GetUDPPort());
GetUDPListener()->SendNullPacket(KADEMLIA2_PING, contact->GetIPAddress(), contact->GetUDPPort(), contact->GetUDPKey(), &contact->GetClientID());
} else {
AddDebugLogLineN(logKadPrefs, wxT("No valid client for requesting external port available"));
}
m_externPortLookup = 15 + now;
}
for (EventMap::const_iterator it = m_events.begin(); it != m_events.end(); ++it) {
CRoutingZone *zone = it->first;
if (updateUserFile) {
// The EstimateCount function is not made for really small networks, if we are in LAN mode, it is actually
// better to assume that all users of the network are in our routing table and use the real count function
if (IsRunningInLANMode()) {
tempUsers = zone->GetNumContacts();
} else {
tempUsers = zone->EstimateCount();
}
if (maxUsers < tempUsers) {
maxUsers = tempUsers;
}
}
if (m_bigTimer <= now) {
if (zone->m_nextBigTimer <= now) {
if(zone->OnBigTimer()) {
zone->m_nextBigTimer = HR2S(1) + now;
m_bigTimer = SEC(10) + now;
}
} else {
if (lastContact && (now - lastContact > KADEMLIADISCONNECTDELAY - MIN2S(5))) {
if(zone->OnBigTimer()) {
zone->m_nextBigTimer = HR2S(1) + now;
m_bigTimer = SEC(10) + now;
}
}
}
}
if (zone->m_nextSmallTimer <= now) {
zone->OnSmallTimer();
zone->m_nextSmallTimer = MIN2S(1) + now;
}
}
// This is a convenient place to add this, although not related to routing
if (m_nextSearchJumpStart <= now) {
CSearchManager::JumpStart();
m_nextSearchJumpStart = SEARCH_JUMPSTART + now;
}
// Try to consolidate any zones that are close to empty.
if (m_consolidate <= now) {
uint32_t mergedCount = instance->m_routingZone->Consolidate();
if (mergedCount) {
AddDebugLogLineN(logKadRouting, CFormat(wxT("Kad merged %u zones")) % mergedCount);
}
m_consolidate = MIN2S(45) + now;
}
// Update user count only if changed.
if (updateUserFile) {
if (maxUsers != instance->m_prefs->GetKademliaUsers()) {
instance->m_prefs->SetKademliaUsers(maxUsers);
instance->m_prefs->SetKademliaFiles();
theApp->ShowUserCount();
}
}
if (!IsConnected() && !s_bootstrapList.empty() && (now - m_bootstrap > 15 || (GetRoutingZone()->GetNumContacts() == 0 && now - m_bootstrap >= 2))) {
CContact *contact = s_bootstrapList.front();
s_bootstrapList.pop_front();
m_bootstrap = now;
AddDebugLogLineN(logKadMain, CFormat(wxT("Trying to bootstrap Kad from %s, Distance: %s Version: %u, %u contacts left"))
% KadIPToString(contact->GetIPAddress()) % contact->GetDistance().ToHexString() % contact->GetVersion() % s_bootstrapList.size());
instance->m_udpListener->Bootstrap(contact->GetIPAddress(), contact->GetUDPPort(), contact->GetVersion(), &contact->GetClientID());
delete contact;
}
if (GetUDPListener() != NULL) {
GetUDPListener()->ExpireClientSearch(); // function does only one compare in most cases, so no real need for a timer
}
}
示例3: Process
//.........这里部分代码省略.........
}
for (EventMap::const_iterator itEventMap = m_mapEvents.begin(); itEventMap != m_mapEvents.end(); ++itEventMap)
{
CRoutingZone* pZone = itEventMap->first;
if( bUpdateUserFile )
{
// The EstimateCount function is not made for really small networks, if we are in LAN mode, it is actually
// better to assume that all users of the network are in our routingtable and use the real count function
if (IsRunningInLANMode())
uTempUsers = pZone->GetNumContacts();
else
uTempUsers = pZone->EstimateCount();
if( uMaxUsers < uTempUsers )
uMaxUsers = uTempUsers;
}
if (m_tBigTimer <= tNow)
{
if( pZone->m_tNextBigTimer <= tNow )
{
if(pZone->OnBigTimer())
{
pZone->m_tNextBigTimer = HR2S(1) + tNow;
m_tBigTimer = SEC(10) + tNow;
}
}
else
{
if( uLastContact && ( (tNow - uLastContact) > (KADEMLIADISCONNECTDELAY-MIN2S(5))))
{
if(pZone->OnBigTimer())
{
pZone->m_tNextBigTimer = HR2S(1) + tNow;
m_tBigTimer = SEC(10) + tNow;
}
}
}
}
if (pZone->m_tNextSmallTimer <= tNow)
{
pZone->OnSmallTimer();
pZone->m_tNextSmallTimer = MIN2S(1) + tNow;
}
}
// This is a convenient place to add this, although not related to routing
if (m_tNextSearchJumpStart <= tNow)
{
CSearchManager::JumpStart();
m_tNextSearchJumpStart = SEARCH_JUMPSTART + tNow;
}
// Try to consolidate any zones that are close to empty.
if (m_tConsolidate <= tNow)
{
uint32 uMergedCount = m_pInstance->m_pRoutingZone->Consolidate();
if(uMergedCount)
AddDebugLogLine(false, _T("Kad merged %u Zones"), uMergedCount);
m_tConsolidate = MIN2S(45) + tNow;
}
//Update user count only if changed.
if( bUpdateUserFile )
{
if( uMaxUsers != m_pInstance->m_pPrefs->GetKademliaUsers())
{
m_pInstance->m_pPrefs->SetKademliaUsers(uMaxUsers);
m_pInstance->m_pPrefs->SetKademliaFiles();
theApp.emuledlg->ShowUserCount();
}
}
if(!IsConnected() && !s_liBootstapList.IsEmpty()
&& (tNow - m_tBootstrap > 15 || (GetRoutingZone()->GetNumContacts() == 0 && tNow - m_tBootstrap >= 2)))
{
if (!s_liTriedBootstapList.IsEmpty())
{
CContact* pLastTriedContact = s_liTriedBootstapList.GetHead();
pLastTriedContact->SetBootstrapFailed();
theApp.emuledlg->kademliawnd->ContactRef(pLastTriedContact);
}
CContact* pContact = s_liBootstapList.RemoveHead();
m_tBootstrap = tNow;
DebugLog(_T("Trying to Bootstrap Kad from %s, Distance: %s, Version: %u, %u Contacts left"), ipstr(ntohl(pContact->GetIPAddress())), pContact->GetDistance().ToHexString(), pContact->GetVersion(), s_liBootstapList.GetCount());
m_pInstance->m_pUDPListener->Bootstrap(pContact->GetIPAddress(), pContact->GetUDPPort(), pContact->GetVersion(), &pContact->GetClientID());
s_liTriedBootstapList.AddHead(pContact);
}
else if (!IsConnected() && s_liBootstapList.IsEmpty() && !s_liTriedBootstapList.IsEmpty()
&& (tNow - m_tBootstrap > 15 || (GetRoutingZone()->GetNumContacts() == 0 && tNow - m_tBootstrap >= 2)))
{
// failed to bootstrap
AddLogLine(true, GetResString(IDS_BOOTSTRAPFAILED));
theApp.emuledlg->kademliawnd->StopUpdateContacts();
while (!s_liTriedBootstapList.IsEmpty())
delete s_liTriedBootstapList.RemoveHead();
theApp.emuledlg->kademliawnd->StartUpdateContacts();
}
if (GetUDPListener() != NULL)
GetUDPListener()->ExpireClientSearch(); // function does only one compare in most cases, so no real need for a timer
}