20 #ifndef NDN_CONSUMER_H 21 #define NDN_CONSUMER_H 23 #include "ns3/ndnSIM/model/ndn-common.hpp" 27 #include "ns3/random-variable-stream.h" 28 #include "ns3/nstime.h" 29 #include "ns3/data-rate.h" 31 #include "ns3/ndnSIM/model/ndn-common.hpp" 32 #include "ns3/ndnSIM/utils/ndn-rtt-estimator.hpp" 37 #include <boost/multi_index_container.hpp> 38 #include <boost/multi_index/tag.hpp> 39 #include <boost/multi_index/ordered_index.hpp> 40 #include <boost/multi_index/member.hpp> 63 OnData(shared_ptr<const Data> contentObject);
67 OnNack(shared_ptr<const lp::Nack> nack);
153 struct RetxSeqsContainer :
public std::set<uint32_t> {
156 RetxSeqsContainer m_retxSeqs;
162 SeqTimeout(uint32_t _seq, Time _time)
184 struct SeqTimeoutsContainer
185 :
public boost::multi_index::
186 multi_index_container<SeqTimeout,
188 indexed_by<boost::multi_index::
189 ordered_unique<boost::multi_index::tag<i_seq>,
191 member<SeqTimeout, uint32_t,
194 ordered_non_unique<boost::multi_index::
197 member<SeqTimeout, Time,
198 &SeqTimeout::time>>>> {
201 SeqTimeoutsContainer m_seqTimeouts;
203 SeqTimeoutsContainer m_seqLastDelay;
204 SeqTimeoutsContainer m_seqFullDelay;
205 std::map<uint32_t, uint32_t> m_seqRetxCounts;
207 TracedCallback<Ptr<App> , uint32_t , Time , int32_t >
208 m_lastRetransmittedInterestDataDelay;
209 TracedCallback<Ptr<App> , uint32_t , Time ,
210 uint32_t , int32_t > m_firstInterestDataDelay;
void(* LastRetransmittedInterestDataDelayCallback)(Ptr< App > app, uint32_t seqno, Time delay, int32_t hopCount)
Time m_interestLifeTime
LifeTime for interest packet.
virtual void OnTimeout(uint32_t sequenceNumber)
Timeout event.
uint32_t m_seqMax
maximum number of sequence number
Copyright (c) 2011-2015 Regents of the University of California.
void SetRetxTimer(Time retxTimer)
Modifies the frequency of checking the retransmission timeouts.
Time m_offTime
Time interval between packets.
uint32_t m_seq
currently requested sequence number
Time m_retxTimer
Currently estimated retransmission timer.
Ptr< RttEstimator > m_rtt
RTT estimator.
Name m_interestName
NDN Name of the Interest (use Name)
void CheckRetxTimeout()
Checks if the packet need to be retransmitted becuase of retransmission timer expiration.
NDN application for sending out Interest packets.
virtual void OnData(shared_ptr< const Data > contentObject)
Method that will be called every time new Data arrives.
void SendPacket()
Actually send packet.
virtual void ScheduleNextPacket()=0
Constructs the Interest packet and sends it using a callback to the underlying NDN protocol.
Time GetRetxTimer() const
Returns the frequency of checking the retransmission timeouts.
virtual void OnNack(shared_ptr< const lp::Nack > nack)
Method that will be called every time new Nack arrives.
Copyright (c) 2011-2015 Regents of the University of California.
void(* FirstInterestDataDelayCallback)(Ptr< App > app, uint32_t seqno, Time delay, uint32_t retxCount, int32_t hopCount)
Base class that all NDN applications should be derived from.
Ptr< UniformRandomVariable > m_rand
nonce generator
Consumer()
Default constructor Sets up randomizer function and packet sequence number.
virtual void StopApplication()
Called at time specified by Stop.
EventId m_sendEvent
EventId of pending "send packet" event.
virtual void WillSendOutInterest(uint32_t sequenceNumber)
An event that is fired just before an Interest packet is actually send out (send is inevitable)
EventId m_retxEvent
Event to check whether or not retransmission should be performed.
static TypeId GetTypeId()
virtual void StartApplication()
Called at time specified by Start.