52 tlv::sizeOfVarNumber(
sizeof(lp::Sequence)) +
105 handleOutgoing(std::vector<lp::Packet>& frags, lp::Packet&& pkt,
bool isInterest);
124 using UnackedFrags = std::map<lp::Sequence, UnackedFrag>;
132 assignTxSequence(lp::Packet& frag);
148 std::vector<lp::Sequence>
149 findLostLpPackets(UnackedFrags::iterator ackIt);
154 std::vector<lp::Sequence>
155 onLpPacketLost(lp::Sequence txSeq,
bool isTimeout);
165 onLpPacketAcknowledged(UnackedFrags::iterator fragIt);
175 deleteUnackedFrag(UnackedFrags::iterator fragIt);
185 UnackedFrag(lp::Packet p)
192 ndn::scheduler::ScopedEventId rtoTimer;
193 time::steady_clock::time_point sendTime = time::steady_clock::now();
194 size_t retxCount = 0;
195 size_t nGreaterSeqAcks = 0;
196 shared_ptr<NetPkt> netPkt;
205 NetPkt(lp::Packet&& p,
bool isInterest)
207 , isInterest(isInterest)
212 std::vector<UnackedFrags::iterator> unackedFrags;
215 bool didRetx =
false;
219 GenericLinkService* m_linkService =
nullptr;
220 UnackedFrags m_unackedFrags;
225 UnackedFrags::iterator m_firstUnackedFrag;
226 std::queue<lp::Sequence> m_ackQueue;
227 std::map<lp::Sequence, time::steady_clock::time_point> m_recentRecvSeqs;
228 std::queue<lp::Sequence> m_recentRecvSeqsQueue;
229 lp::Sequence m_lastTxSeqNo;
230 ndn::scheduler::ScopedEventId m_idleAckTimer;
231 ndn::util::RttEstimator m_rttEst;