A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
wifi-mac-queue-elem.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2022 Universita' degli Studi di Napoli Federico II
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation;
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software
15 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 *
17 * Author: Stefano Avallone <stavallo@unina.it>
18 */
19
20#ifndef WIFI_MAC_QUEUE_ELEM_H
21#define WIFI_MAC_QUEUE_ELEM_H
22
23#include "qos-utils.h"
24
25#include "ns3/callback.h"
26#include "ns3/nstime.h"
27
28#include <map>
29
30namespace ns3
31{
32
33class WifiMpdu;
34
35/**
36 * \ingroup wifi
37 * Type of elements stored in a WifiMacQueue container.
38 *
39 * Such elements can be accessed by the WifiMacQueue (via iterators) and
40 * by the WifiMpdu itself (via the iterator it stores).
41 *
42 * Data frames transmitted by an 11be MLD must include link addresses as (RA, TA)
43 * which are different than the MLD addresses seen by the upper layer. In order
44 * to keep the original version of the data frame, we create an alias when a data
45 * frame is sent over a link. Aliases are stored in the map of in-flight MPDUs, which
46 * is indexed by the ID of the link over which the alias is in-flight.
47 * For consistency, also data frame transmitted by non-MLDs have an alias, which is
48 * simply a pointer to the original version of the data frame.
49 */
51{
52 Ptr<WifiMpdu> mpdu; ///< MPDU stored by this element
53 Time expiryTime{0}; ///< expiry time of the MPDU (set by WifiMacQueue)
54 AcIndex ac{AC_UNDEF}; ///< the Access Category associated with the queue
55 ///< storing this element (set by WifiMacQueue)
56 bool expired{false}; ///< whether this MPDU has been marked as expired
57 std::map<uint8_t, Ptr<WifiMpdu>> inflights; ///< map of MPDUs in-flight on each link
58 Callback<void, Ptr<WifiMpdu>> deleter; ///< reset the iterator stored by the MPDU
59
60 /**
61 * Constructor.
62 * \param item the MPDU stored by this queue element
63 */
65
67};
68
69} // namespace ns3
70
71#endif /* WIFI_MAC_QUEUE_ELEM_H */
Callback template class.
Definition: callback.h:438
Smart pointer class similar to boost::intrusive_ptr.
Definition: ptr.h:77
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:105
AcIndex
This enumeration defines the Access Categories as an enumeration with values corresponding to the AC ...
Definition: qos-utils.h:73
@ AC_UNDEF
Total number of ACs.
Definition: qos-utils.h:87
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Type of elements stored in a WifiMacQueue container.
bool expired
whether this MPDU has been marked as expired
Ptr< WifiMpdu > mpdu
MPDU stored by this element.
Callback< void, Ptr< WifiMpdu > > deleter
reset the iterator stored by the MPDU
AcIndex ac
the Access Category associated with the queue storing this element (set by WifiMacQueue)
std::map< uint8_t, Ptr< WifiMpdu > > inflights
map of MPDUs in-flight on each link
Time expiryTime
expiry time of the MPDU (set by WifiMacQueue)