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

Method Ack

library/cpp/netliba/v6/net_acks.cpp:107–142  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

105 }
106
107 void TAckTracker::Ack(int pkt, float deltaT, bool updateRTT) {
108 Y_ASSERT(pkt >= 0 && pkt < PacketCount);
109 if (AckReceived[pkt])
110 return;
111 AckReceived[pkt] = true;
112 //printf("Ack received for %d\n", pkt);
113 TPacketHash::iterator i = PacketsInFly.find(pkt);
114 if (i == PacketsInFly.end()) {
115 for (size_t k = 0; k < ResendQueue.size(); ++k) {
116 if (ResendQueue[k] == pkt) {
117 ResendQueue[k] = ResendQueue.back();
118 ResendQueue.pop_back();
119 break;
120 }
121 }
122 TPacketHash::iterator z = DroppedPackets.find(pkt);
123 if (z != DroppedPackets.end()) {
124 // late packet arrived
125 if (updateRTT) {
126 float ping = z->second + deltaT;
127 Congestion->RegisterRTT(ping);
128 }
129 DroppedPackets.erase(z);
130 } else {
131 // Y_ASSERT(0); // ack on nonsent packet, possible in resend scenario
132 }
133 return;
134 }
135 if (updateRTT) {
136 float ping = i->second + deltaT;
137 //printf("Register RTT %g\n", ping * 1000);
138 Congestion->RegisterRTT(ping);
139 }
140 PacketsInFly.erase(i);
141 Congestion->Success();
142 }
143
144 void TAckTracker::AckAll() {
145 for (TPacketHash::const_iterator i = PacketsInFly.begin(); i != PacketsInFly.end(); ++i) {

Callers 2

AckPacketFunction · 0.45
RecvCycleMethod · 0.45

Calls 8

findMethod · 0.45
endMethod · 0.45
sizeMethod · 0.45
backMethod · 0.45
pop_backMethod · 0.45
RegisterRTTMethod · 0.45
eraseMethod · 0.45
SuccessMethod · 0.45

Tested by

no test coverage detected