| 1511 | /////////////////////////////////////////////////////////////////////////////// |
| 1512 | |
| 1513 | static void DumpConnection(const TConnection* connection) { |
| 1514 | if (!connection->GetSendQueue().Empty() || !connection->GetRecvQueue().Empty()) { |
| 1515 | fprintf(stderr, "congestion timeout! sends: %d, recv: %d\n", |
| 1516 | (int)connection->GetSendQueue().Size(), (int)connection->GetRecvQueue().Size()); |
| 1517 | } |
| 1518 | |
| 1519 | fprintf(stderr, "CONNECTION: %s\n", GetGuidAsString(connection->GetGuid()).c_str()); |
| 1520 | |
| 1521 | fprintf(stderr, "stats - in count: %d, out count: %d, in bytes: %d, out bytes: %d\n", |
| 1522 | connection->GetPendingDataSize().InpCount, connection->GetPendingDataSize().OutCount, |
| 1523 | (int)connection->GetPendingDataSize().InpDataSize, (int)connection->GetPendingDataSize().OutDataSize); |
| 1524 | |
| 1525 | fprintf(stderr, "printng debug info...\n%s\n", connection->GetDebugInfo().c_str()); |
| 1526 | |
| 1527 | fprintf(stderr, "printing sends...\n"); |
| 1528 | |
| 1529 | for (TSendTransfers::TIdIterator i1 = connection->GetSendQueue().Begin(); i1 != connection->GetSendQueue().End(); ++i1) { |
| 1530 | const TUdpOutTransfer& xfer = *connection->GetSendQueue().Get(*i1); |
| 1531 | |
| 1532 | fprintf(stderr, "send: %" PRIu64 ", packet count: %d, packet size: %d, last packet size: %d\n", |
| 1533 | (ui64)*i1, xfer.PacketCount, xfer.PacketSize, xfer.LastPacketSize); |
| 1534 | |
| 1535 | fprintf(stderr, "ack tracker - packet count: %d, current packet: %d\n", |
| 1536 | xfer.AckTracker.PacketCount, xfer.AckTracker.CurrentPacket); |
| 1537 | |
| 1538 | fprintf(stderr, "\tacks: \n"); |
| 1539 | for (int i2 = 0; i2 != (int)xfer.AckTracker.GetAckReceived().size(); ++i2) { |
| 1540 | fprintf(stderr, "\t\t%d: %s\n", i2, xfer.AckTracker.GetAckReceived()[i2] ? "acked" : "not acked"); |
| 1541 | } |
| 1542 | |
| 1543 | fprintf(stderr, "\tresend queue: \n"); |
| 1544 | for (int i3 = 0; i3 != (int)xfer.AckTracker.ResendQueue.size(); ++i3) { |
| 1545 | fprintf(stderr, "\t\t%d\n", xfer.AckTracker.ResendQueue[i3]); |
| 1546 | } |
| 1547 | |
| 1548 | fprintf(stderr, "\tpackets in fly: \n"); |
| 1549 | for (const auto& i4 : xfer.AckTracker.PacketsInFly) { |
| 1550 | fprintf(stderr, "\t\t%d\n", i4.first); |
| 1551 | } |
| 1552 | |
| 1553 | fprintf(stderr, "\tdropped packets: \n"); |
| 1554 | for (const auto& droppedPacket : xfer.AckTracker.DroppedPackets) { |
| 1555 | fprintf(stderr, "\t\t%d\n", droppedPacket.first); |
| 1556 | } |
| 1557 | } |
| 1558 | |
| 1559 | fprintf(stderr, "printing recvs...\n"); |
| 1560 | |
| 1561 | for (TRecvTransfers::TIdIterator i1 = connection->GetRecvQueue().Begin(); i1 != connection->GetRecvQueue().End(); ++i1) { |
| 1562 | const TUdpInTransfer& xfer = *connection->GetRecvQueue().Get(*i1); |
| 1563 | |
| 1564 | fprintf(stderr, "recv: %" PRIu64 ", packet count: %d, has last: %d, packet size: %d, last packet size: %d" |
| 1565 | ", time since last recv: %f\n", |
| 1566 | (ui64)*i1, xfer.GetPacketCount(), (int)xfer.HasLastPacket, (int)xfer.PacketSize, (int)xfer.LastPacketSize, |
| 1567 | xfer.TimeSinceLastRecv); |
| 1568 | |
| 1569 | fprintf(stderr, "\tpackets:"); |
| 1570 | for (int i2 = 0; i2 != xfer.GetPacketCount(); ++i2) { |
no test coverage detected