A class to keep track of the packet originator status. More...
Collaboration diagram for ns3::OriginatorRxStatus:Public Member Functions | |
| OriginatorRxStatus () | |
| ~OriginatorRxStatus () | |
| void | AccumulateFirstFragment (Ptr< const Packet > packet) |
| We have received a first fragmented packet. | |
| void | AccumulateFragment (Ptr< const Packet > packet) |
| We received a fragmented packet (not first and not last). | |
| Ptr< Packet > | AccumulateLastFragment (Ptr< const Packet > packet) |
| We have received a last fragment of the fragmented packets (indicated by the no more fragment field). | |
| uint16_t | GetLastSequenceControl () const |
| Return the last sequence control we received. | |
| bool | IsDeFragmenting () const |
| Check if we are de-fragmenting packets. | |
| bool | IsNextFragment (uint16_t sequenceControl) const |
| Check if the sequence control (i.e. | |
| void | SetSequenceControl (uint16_t sequenceControl) |
| Set the last sequence control we received. | |
Private Types | |
| typedef std::list< Ptr< const Packet > > | Fragments |
| typedef for a list of fragments (i.e. | |
| typedef std::list< Ptr< constPacket > >::const_iterator | FragmentsCI |
| typedef for a const iterator for Fragments | |
Private Attributes | |
| bool | m_defragmenting |
| flag to indicate whether we are defragmenting | |
| Fragments | m_fragments |
| fragments | |
| uint16_t | m_lastSequenceControl |
| last sequence control | |
A class to keep track of the packet originator status.
It recomposes the packet from multiple fragments.
Definition at line 37 of file mac-rx-middle.cc.
|
private |
typedef for a list of fragments (i.e.
incomplete Packet).
Definition at line 43 of file mac-rx-middle.cc.
|
private |
typedef for a const iterator for Fragments
Definition at line 47 of file mac-rx-middle.cc.
|
inline |
Definition at line 54 of file mac-rx-middle.cc.
References m_defragmenting, and m_lastSequenceControl.
|
inline |
Definition at line 61 of file mac-rx-middle.cc.
References m_fragments.
We have received a first fragmented packet.
We start the deframentation by saving the first fragment.
| packet | the first fragmented packet |
Definition at line 83 of file mac-rx-middle.cc.
References m_defragmenting, m_fragments, and NS_ASSERT.
Referenced by ns3::MacRxMiddle::HandleFragments().
Here is the caller graph for this function:We received a fragmented packet (not first and not last).
We simply save it into our internal list.
| packet | the received fragment |
Definition at line 120 of file mac-rx-middle.cc.
References m_defragmenting, m_fragments, and NS_ASSERT.
Referenced by ns3::MacRxMiddle::HandleFragments().
Here is the caller graph for this function:We have received a last fragment of the fragmented packets (indicated by the no more fragment field).
We re-construct the packet from the fragments we saved and return the full packet.
| packet | the last fragment |
Definition at line 100 of file mac-rx-middle.cc.
References m_defragmenting, m_fragments, and NS_ASSERT.
Referenced by ns3::MacRxMiddle::HandleFragments().
Here is the caller graph for this function:
|
inline |
Return the last sequence control we received.
Definition at line 146 of file mac-rx-middle.cc.
References m_lastSequenceControl.
Referenced by ns3::MacRxMiddle::IsDuplicate(), and ns3::MacRxMiddle::Receive().
Here is the caller graph for this function:
|
inline |
Check if we are de-fragmenting packets.
Definition at line 72 of file mac-rx-middle.cc.
References m_defragmenting.
Referenced by ns3::MacRxMiddle::HandleFragments().
Here is the caller graph for this function:
|
inline |
Check if the sequence control (i.e.
fragment number) is in order.
| sequenceControl | the raw sequence control |
Definition at line 135 of file mac-rx-middle.cc.
References m_lastSequenceControl.
Referenced by ns3::MacRxMiddle::HandleFragments().
Here is the caller graph for this function:
|
inline |
Set the last sequence control we received.
| sequenceControl | the last sequence control we received |
Definition at line 156 of file mac-rx-middle.cc.
References m_lastSequenceControl.
Referenced by ns3::MacRxMiddle::HandleFragments(), and ns3::MacRxMiddle::Receive().
Here is the caller graph for this function:
|
private |
flag to indicate whether we are defragmenting
Definition at line 49 of file mac-rx-middle.cc.
Referenced by OriginatorRxStatus(), AccumulateFirstFragment(), AccumulateFragment(), AccumulateLastFragment(), and IsDeFragmenting().
|
private |
fragments
Definition at line 51 of file mac-rx-middle.cc.
Referenced by ~OriginatorRxStatus(), AccumulateFirstFragment(), AccumulateFragment(), and AccumulateLastFragment().
|
private |
last sequence control
Definition at line 50 of file mac-rx-middle.cc.
Referenced by OriginatorRxStatus(), GetLastSequenceControl(), IsNextFragment(), and SetSequenceControl().