A Discrete-Event Network Simulator
API
originator-block-ack-agreement.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2009, 2010 MIRKO BANCHI
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation;
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  *
18  * Author: Mirko Banchi <mk.banchi@gmail.com>
19  * Author: Tommaso Pecorella <tommaso.pecorella@unifi.it>
20  */
21 #ifndef ORIGINATOR_BLOCK_ACK_AGREEMENT_H
22 #define ORIGINATOR_BLOCK_ACK_AGREEMENT_H
23 
24 #include "block-ack-agreement.h"
25 #include "block-ack-window.h"
26 
28 
29 namespace ns3 {
30 
31 class WifiMacQueueItem;
32 
59 {
61  friend class BlockAckManager;
63  friend class ::OriginatorBlockAckWindowTest;
64 
65 
66 public:
73  OriginatorBlockAckAgreement (Mac48Address recipient, uint8_t tid);
100  enum State
102  {
107  REJECTED
108  };
114  void SetState (State state);
121  bool IsPending (void) const;
128  bool IsEstablished (void) const;
135  bool IsNoReply (void) const;
142  bool IsReset (void) const;
149  bool IsRejected (void) const;
150 
158  uint16_t GetStartingSequence (void) const override;
159 
167  std::size_t GetDistance (uint16_t seqNumber) const;
168 
173  void InitTxWindow (void);
174 
196 
197 
198 private:
203  void AdvanceTxWindow (void);
204 
207 };
208 
209 } //namespace ns3
210 
211 #endif /* ORIGINATOR_BLOCK_ACK_AGREEMENT_H */
ns3::OriginatorBlockAckAgreement::IsEstablished
bool IsEstablished(void) const
Check if the current state of this agreement is ESTABLISHED.
Definition: originator-block-ack-agreement.cc:54
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::OriginatorBlockAckAgreement::OriginatorBlockAckAgreement
OriginatorBlockAckAgreement(Mac48Address recipient, uint8_t tid)
Constructor.
Definition: originator-block-ack-agreement.cc:31
ns3::OriginatorBlockAckAgreement::IsPending
bool IsPending(void) const
Check if the current state of this agreement is PENDING.
Definition: originator-block-ack-agreement.cc:48
ns3::OriginatorBlockAckAgreement::NO_REPLY
@ NO_REPLY
Definition: originator-block-ack-agreement.h:105
ns3::BlockAckManager
Manages all block ack agreements for an originator station.
Definition: block-ack-manager.h:70
ns3::OriginatorBlockAckAgreement::IsNoReply
bool IsNoReply(void) const
Check if the current state of this agreement is NO_REPLY.
Definition: originator-block-ack-agreement.cc:66
ns3::Mac48Address
an EUI-48 address
Definition: mac48-address.h:44
ns3::OriginatorBlockAckAgreement::PENDING
@ PENDING
Definition: originator-block-ack-agreement.h:103
ns3::OriginatorBlockAckAgreement::REJECTED
@ REJECTED
Definition: originator-block-ack-agreement.h:107
block-ack-agreement.h
ns3::BlockAckAgreement
Maintains information for a block ack agreement.
Definition: block-ack-agreement.h:34
ns3::OriginatorBlockAckAgreement::InitTxWindow
void InitTxWindow(void)
Initialize the originator's transmit window by setting its size and starting sequence number equal to...
Definition: originator-block-ack-agreement.cc:95
ns3::OriginatorBlockAckAgreement::NotifyDiscardedMpdu
void NotifyDiscardedMpdu(Ptr< const WifiMacQueueItem > mpdu)
Advance the transmit window beyond the MPDU that has been reported to be discarded.
Definition: originator-block-ack-agreement.cc:158
ns3::OriginatorBlockAckAgreement::NotifyTransmittedMpdu
void NotifyTransmittedMpdu(Ptr< const WifiMacQueueItem > mpdu)
Advance the transmit window so as to include the transmitted MPDU, if the latter is not an old packet...
Definition: originator-block-ack-agreement.cc:110
ns3::Ptr
Smart pointer class similar to boost::intrusive_ptr.
Definition: ptr.h:74
ns3::OriginatorBlockAckAgreement::SetState
void SetState(State state)
Set the current state.
Definition: originator-block-ack-agreement.cc:42
ns3::OriginatorBlockAckAgreement::GetDistance
std::size_t GetDistance(uint16_t seqNumber) const
Get the distance between the current starting sequence number and the given sequence number.
Definition: originator-block-ack-agreement.cc:89
ns3::OriginatorBlockAckAgreement::State
State
Represents the state for this agreement.
Definition: originator-block-ack-agreement.h:102
ns3::OriginatorBlockAckAgreement::ESTABLISHED
@ ESTABLISHED
Definition: originator-block-ack-agreement.h:104
ns3::OriginatorBlockAckAgreement::~OriginatorBlockAckAgreement
~OriginatorBlockAckAgreement()
Definition: originator-block-ack-agreement.cc:37
OriginatorBlockAckWindowTest
Test for the originator block ack window.
Definition: block-ack-test-suite.cc:264
ns3::OriginatorBlockAckAgreement
Maintains the state and information about transmitted MPDUs with Ack Policy set to Block Ack for an o...
Definition: originator-block-ack-agreement.h:59
ns3::BlockAckWindow
Block ack window.
Definition: block-ack-window.h:57
ns3::OriginatorBlockAckAgreement::NotifyAckedMpdu
void NotifyAckedMpdu(Ptr< const WifiMacQueueItem > mpdu)
Record that the given MPDU has been acknowledged and advance the transmit window if possible.
Definition: originator-block-ack-agreement.cc:135
ns3::OriginatorBlockAckAgreement::AdvanceTxWindow
void AdvanceTxWindow(void)
Advance the transmit window so that the starting sequence number is the nearest unacknowledged MPDU.
Definition: originator-block-ack-agreement.cc:101
ns3::OriginatorBlockAckAgreement::IsReset
bool IsReset(void) const
Check if the current state of this agreement is RESET.
Definition: originator-block-ack-agreement.cc:72
ns3::OriginatorBlockAckAgreement::IsRejected
bool IsRejected(void) const
Check if the current state of this agreement is REJECTED.
Definition: originator-block-ack-agreement.cc:60
ns3::OriginatorBlockAckAgreement::m_state
State m_state
state
Definition: originator-block-ack-agreement.h:205
block-ack-window.h
ns3::OriginatorBlockAckAgreement::m_txWindow
BlockAckWindow m_txWindow
originator's transmit window
Definition: originator-block-ack-agreement.h:206
ns3::OriginatorBlockAckAgreement::RESET
@ RESET
Definition: originator-block-ack-agreement.h:106
ns3::OriginatorBlockAckAgreement::GetStartingSequence
uint16_t GetStartingSequence(void) const override
Return the starting sequence number of the transmit window, if a transmit window has been initialized...
Definition: originator-block-ack-agreement.cc:78