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

Method ProcessAcksPacket

library/cpp/netliba/v12/udp_host.cpp:1277–1338  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1275 }
1276
1277 bool TUdpHost::ProcessAcksPacket(const EUdpCmd cmd, const char* pktData, const char* pktEnd,
1278 const TTransfer& transfer, const bool thatSideHasChanged) {
1279 Y_ASSERT(IsAckCmd(cmd));
1280
1281 TConnection* connection = CheckedCast<TConnection*>(transfer.Connection.Get());
1282 TUdpOutTransfer* xferPtr = connection->GetSendQueue().Get(transfer.Id);
1283 if (!xferPtr) {
1284 return true;
1285 }
1286 TUdpOutTransfer& xfer = *xferPtr;
1287
1288 if (!ReadAckPacketHeader(cmd, &pktData, pktEnd)) {
1289 Y_ASSERT(false);
1290 return false;
1291 }
1292
1293 NHPTimer::STime tCopy = CurrentT;
1294 float deltaT = (float)NHPTimer::GetTimePassed(&tCopy);
1295 deltaT = ClampVal(deltaT, 0.0f, UdpTransferTimeout / 3);
1296
1297 //printf("ack (%d) transferId = %" PRIu64 "\n", (int)cmd, transfer.Id);
1298
1299 switch (cmd) {
1300 case ACK: {
1301 if (thatSideHasChanged) {
1302 return true;
1303 }
1304 return ReadAndSetAcks(pktData, pktEnd, deltaT, &xfer.AckTracker);
1305 }
1306 case ACK_COMPLETE:
1307 case ACK_CANCELED: {
1308 int lastPacketId;
1309 if (!ReadAckCompleteAndCanceledTails(pktData, pktEnd, &lastPacketId)) {
1310 Y_ASSERT(false);
1311 return false;
1312 }
1313
1314 if (!thatSideHasChanged && lastPacketId != -1) {
1315 xfer.AckTracker.Ack(lastPacketId, deltaT, true); // update RTT
1316 }
1317 xfer.AckTracker.AckAll(); // acking packets is required, otherwise they will be treated as lost (look AckTracker destructor)
1318
1319 if (cmd == ACK_COMPLETE) {
1320 SuccessfulSend(transfer);
1321 } else {
1322 CanceledSend(transfer);
1323 }
1324
1325 return true;
1326 }
1327 case ACK_RESEND_NOSHMEM: {
1328 // abort execution here
1329 // failed to open shmem on recv side, need to transmit data without using shmem
1330 Y_ABORT_UNLESS(0, "not implemented yet");
1331 return true;
1332 }
1333 default:
1334 break;

Callers

nothing calls this directly

Calls 7

IsAckCmdFunction · 0.85
ReadAckPacketHeaderFunction · 0.85
ReadAndSetAcksFunction · 0.85
GetMethod · 0.45
AckMethod · 0.45
AckAllMethod · 0.45

Tested by

no test coverage detected