MCPcopy Create free account
hub / github.com/catboost/catboost / SendPingsIfNeeded

Method SendPingsIfNeeded

library/cpp/netliba/v12/udp_http.cpp:632–672  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

630 }
631 }
632 void SendPingsIfNeeded() {
633 NHPTimer::STime tChk = PingsSendT;
634 float deltaT = (float)NHPTimer::GetTimePassed(&tChk);
635 if (deltaT < 0.5) {
636 return;
637 }
638 PingsSendT = tChk;
639 deltaT = ClampVal(deltaT, 0.0f, HTTP_TIMEOUT / 3);
640
641 {
642 for (TOutRequestHash::iterator i = OutRequests.begin(); i != OutRequests.end();) {
643 TOutRequestHash::iterator curIt = i++;
644 TOutRequestState& s = curIt->second;
645 const TGUID& guid = curIt->first;
646 switch (s.State) {
647 case TOutRequestState::S_WAITING:
648 s.TimePassed += deltaT;
649 if (s.TimePassed > HTTP_TIMEOUT) {
650 TAutoPtr<TRopeDataPacket> ms = new TRopeDataPacket;
651 ms->Write((char)PKT_PING);
652 ms->Write(guid);
653 TTransfer trans = SendWithSystemPriority(s.Connection, ms.Release(), TTos(), DEFAULT_NETLIBA_COLOR);
654 TransferHash[trans] = TTransferPurpose(DIR_OUT, guid);
655 s.State = TOutRequestState::S_WAITING_PING_SENDING;
656 //printf("OutReq %s SendPingsIfNeeded() S_WAITING -> S_WAITING_PING_SENDING\n", GetGuidAsString(guid).c_str());
657 s.PingTransfer = trans;
658 }
659 break;
660 case TOutRequestState::S_WAITING_PING_SENT:
661 s.TimePassed += deltaT;
662 if (s.TimePassed > HTTP_TIMEOUT * 4) {
663 //printf("OutReq %s SendPingsIfNeeded() S_WAITING_PING_SENT -> failed\n", GetGuidAsString(guid).c_str());
664 FinishRequest(curIt, TUdpHttpResponse::FAILED, nullptr, "request failed: http timeout in state S_WAITING_PING_SENT");
665 }
666 break;
667 default:
668 break;
669 }
670 }
671 }
672 }
673 void CleanCachesIfNeeded() {
674 NHPTimer::STime tChk = ConnectionsCacheT;
675 float deltaT = (float)NHPTimer::GetTimePassed(&tChk);

Callers

nothing calls this directly

Calls 6

TTosClass · 0.85
TTransferPurposeClass · 0.70
beginMethod · 0.45
endMethod · 0.45
WriteMethod · 0.45
ReleaseMethod · 0.45

Tested by

no test coverage detected