by passing xfer we reduce number of hash map finds.
| 759 | |
| 760 | // by passing xfer we reduce number of hash map finds. |
| 761 | inline void AddAcksToPacketQueue(TUdpSocket& s, char* packetBuffer, const size_t packetBufferSize, |
| 762 | TConnection* connection, const ui64 transferId, TUdpInTransfer* xfer) { |
| 763 | char* pktData = packetBuffer; |
| 764 | WriteAcksHeader(&pktData, ACK, connection, transferId); |
| 765 | |
| 766 | const size_t acks = WriteAck(xfer, (int*)pktData, (size_t)(packetBufferSize - (pktData - packetBuffer)) / SIZEOF_ACK); |
| 767 | pktData += acks * SIZEOF_ACK; |
| 768 | |
| 769 | const size_t ackPacketSize = connection->GetSmallMtuUseXs() ? UDP_XSMALL_PACKET_SIZE : UDP_SMALL_PACKET_SIZE; |
| 770 | |
| 771 | s.AddPacketToQueue(pktData - packetBuffer, {connection->GetWinsockAddress(), connection->GetWinsockMyAddress()}, |
| 772 | xfer->AckTos, ackPacketSize); |
| 773 | } |
| 774 | |
| 775 | inline bool ReadAndSetAcks(const char* pktData, const char* pktEnd, const float deltaT, TAckTracker* ackTracker) { |
| 776 | return ReadAcks((const int*)pktData, (pktEnd - pktData) / SIZEOF_ACK, deltaT, ackTracker); |
no test coverage detected