A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
bandwidth-manager.h
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2007,2008,2009 INRIA, UDcast
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  * Authors: Jahanzeb Farooq <jahanzeb.farooq@sophia.inria.fr>
19  * Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
20  * <amine.ismail@UDcast.com>
21  */
22 
23 #ifndef BANDWIDTH_MANAGER_H
24 #define BANDWIDTH_MANAGER_H
25 
26 #include <stdint.h>
27 #include "wimax-net-device.h"
28 #include "ul-job.h"
29 #include "bs-uplink-scheduler.h"
30 #include "cid.h"
31 
32 /*
33  The same bandwidth manager class serves both for BS and SS though some functions are exclusive to only one of them.
34  */
35 
36 namespace ns3 {
37 
38 class SSRecord;
39 class ServiceFlow;
40 class UlJob;
41 class UplinkScheduler;
42 
54 class BandwidthManager : public Object
55 {
56 public:
57  static TypeId GetTypeId (void);
59  ~BandwidthManager (void);
60  void DoDispose (void);
61 
62  uint32_t CalculateAllocationSize (const SSRecord *ssRecord, const ServiceFlow *serviceFlow);
63  ServiceFlow* SelectFlowForRequest (uint32_t &bytesToRequest);
64  void SendBandwidthRequest (uint8_t uiuc, uint16_t allocationSize);
65  void ProcessBandwidthRequest (const BandwidthRequestHeader &bwRequestHdr);
66  void SetSubframeRatio (void);
67  uint32_t GetSymbolsPerFrameAllocated (void);
68 private:
70  BandwidthManager& operator= (const BandwidthManager &);
71 
72  Ptr<WimaxNetDevice> m_device;
73  uint16_t m_nrBwReqsSent;
74 };
75 
76 } // namespace ns3
77 
78 #endif /* BANDWIDTH_MANAGER_H */
smart pointer class similar to boost::intrusive_ptr
Definition: ptr.h:59
this class implements the bandwidth-request mac Header as described by IEEE Standard for Local and me...
This class is used by the base station to store some information related to subscriber station in the...
Definition: ss-record.h:43
a base class which provides memory management and object aggregation
Definition: object.h:63
This class manage the bandwidth request and grant mechanism. The bandwidth request and grant mechanis...
a unique identifier for an interface.
Definition: type-id.h:44