A Discrete-Event Network Simulator
API
connection-manager.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2007,2008,2009 INRIA, UDcast
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  * Authors: Jahanzeb Farooq <jahanzeb.farooq@sophia.inria.fr>
18  * Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
19  * <amine.ismail@UDcast.com>
20  */
21 
22 #ifndef CONNECTION_MANAGER_H
23 #define CONNECTION_MANAGER_H
24 
25 #include "cid.h"
26 #include "wimax-connection.h"
27 
28 #include "ns3/mac48-address.h"
29 
30 #include <stdint.h>
31 
32 namespace ns3
33 {
34 
35 class CidFactory;
36 class SSRecord;
37 class RngRsp;
38 class WimaxNetDevice;
39 class SubscriberStationNetDevice;
40 
47 class ConnectionManager : public Object
48 {
49  public:
54  static TypeId GetTypeId();
56  ~ConnectionManager() override;
57  void DoDispose() override;
62  void SetCidFactory(CidFactory* cidFactory);
68  void AllocateManagementConnections(SSRecord* ssRecord, RngRsp* rngrsp);
90  std::vector<Ptr<WimaxConnection>> GetConnections(Cid::Type type) const;
97  uint32_t GetNPackets(Cid::Type type, ServiceFlow::SchedulingType schedulingType) const;
102  bool HasPackets() const;
103 
104  private:
105  std::vector<Ptr<WimaxConnection>> m_basicConnections;
106  std::vector<Ptr<WimaxConnection>> m_primaryConnections;
107  std::vector<Ptr<WimaxConnection>> m_transportConnections;
108  std::vector<Ptr<WimaxConnection>> m_multicastConnections;
109  // only for BS
111 };
112 
113 } // namespace ns3
114 
115 #endif /* CONNECTION_MANAGER_H */
This class is used exclusively by the BS to allocate CIDs to new connections.
Definition: cid-factory.h:46
Cid class.
Definition: cid.h:37
Type
Type enumeration.
Definition: cid.h:41
The same connection manager class serves both for BS and SS though some functions are exclusive to on...
std::vector< Ptr< WimaxConnection > > m_primaryConnections
primary connections
std::vector< Ptr< WimaxConnection > > m_basicConnections
basic connections
void DoDispose() override
Destructor implementation.
void AllocateManagementConnections(SSRecord *ssRecord, RngRsp *rngrsp)
allocates the management connection for an ss record.
std::vector< Ptr< WimaxConnection > > m_transportConnections
transport connections
Ptr< WimaxConnection > GetConnection(Cid cid)
Ptr< WimaxConnection > CreateConnection(Cid::Type type)
create a connection of type type
std::vector< Ptr< WimaxConnection > > GetConnections(Cid::Type type) const
uint32_t GetNPackets(Cid::Type type, ServiceFlow::SchedulingType schedulingType) const
get number of packets
void SetCidFactory(CidFactory *cidFactory)
Set CID factory.
static TypeId GetTypeId()
Get the type ID.
void AddConnection(Ptr< WimaxConnection > connection, Cid::Type type)
add a connection to the list of managed connections
CidFactory * m_cidFactory
the factory
std::vector< Ptr< WimaxConnection > > m_multicastConnections
multicast connections
A base class which provides memory management and object aggregation.
Definition: object.h:89
Smart pointer class similar to boost::intrusive_ptr.
Definition: ptr.h:77
This class implements the ranging response message described by "IEEE Standard for Local and metropol...
Definition: mac-messages.h:125
This class is used by the base station to store some information related to subscriber station in the...
Definition: ss-record.h:46
SchedulingType
section 11.13.11 Service flow scheduling type, page 701
Definition: service-flow.h:62
a unique identifier for an interface.
Definition: type-id.h:59
Every class exported by the ns3 library is enclosed in the ns3 namespace.