/usr/include/ns3.27/ns3/bs-service-flow-manager.h is in libns3-dev 3.27+dfsg-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 | /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) 2009 INRIA, UDcast
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation;
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
*/
#ifndef BS_SERVICE_FLOW_MANAGER_H
#define BS_SERVICE_FLOW_MANAGER_H
#include <stdint.h>
#include "ns3/event-id.h"
#include "mac-messages.h"
#include "ns3/buffer.h"
#include "service-flow-manager.h"
#include "bs-net-device.h"
namespace ns3 {
class Packet;
class ServiceFlow;
class WimaxNetDevice;
class SSRecord;
class WimaxConnection;
class BaseStationNetDevice;
/**
* \ingroup wimax
* \brief BsServiceFlowManager
*/
class BsServiceFlowManager : public ServiceFlowManager
{
public:
/// Confirmation code enumeration
enum ConfirmationCode // as per Table 384 (not all codes implemented)
{
CONFIRMATION_CODE_SUCCESS, CONFIRMATION_CODE_REJECT
};
/**
* Constructor
*
* \param device base station device
*/
BsServiceFlowManager (Ptr<BaseStationNetDevice> device);
~BsServiceFlowManager (void);
void DoDispose (void);
/**
* Register this type.
* \return The TypeId.
*/
static TypeId GetTypeId (void);
/**
* \brief Add a new service flow
* \param serviceFlow the service flow to add
*/
void AddServiceFlow (ServiceFlow *serviceFlow);
/**
* \param sfid the service flow identifier
* \return the service flow which has as identifier sfid
*/
ServiceFlow* GetServiceFlow (uint32_t sfid) const;
/**
* \param cid the connection identifier
* \return the service flow which has as connection identifier cid
*/
ServiceFlow* GetServiceFlow (Cid cid) const;
/**
* \param schedulingType the scheduling type
* \return the list of service flows configured with schedulingType as a QoS class
*/
std::vector<ServiceFlow*> GetServiceFlows (ServiceFlow::SchedulingType schedulingType) const;
/**
* \brief set the maximum Dynamic ServiceFlow Add (DSA) retries
* \param maxDsaRspRetries the maximum DSA response retries
*/
void SetMaxDsaRspRetries (uint8_t maxDsaRspRetries);
/**
* \return the DSA ack timeout event
*/
EventId GetDsaAckTimeoutEvent (void) const;
/**
* \brief allocate service flows
* \param dsaReq the DSA request
* \param cid the connection identifier
*/
void AllocateServiceFlows (const DsaReq &dsaReq, Cid cid);
/**
* \brief add a multicast service flow
* \param sf the service flow
* \param modulation the wimax phy modulation type
*/
void AddMulticastServiceFlow (ServiceFlow sf, enum WimaxPhy::ModulationType modulation);
/**
* \brief process a DSA-ACK message
* \param dsaAck the message to process
* \param cid the identifier of the connection on which the message was received
*/
void ProcessDsaAck (const DsaAck &dsaAck, Cid cid);
/**
* \brief process a DSA-Req message
* \param dsaReq the message to process
* \param cid the identifier of the connection on which the message was received
* \return a pointer to the service flow
*/
ServiceFlow* ProcessDsaReq (const DsaReq &dsaReq, Cid cid);
private:
/**
* Create DSA response function
* \param serviceFlow service flow
* \param transactionId transaction ID
* \return the DSA response
*/
DsaRsp CreateDsaRsp (const ServiceFlow *serviceFlow, uint16_t transactionId);
/**
* \return the maximum DSA response retries
*/
uint8_t GetMaxDsaRspRetries (void) const;
/**
* Create DSA response function
* \param serviceFlow service flow
* \param cid the identifier of the connection on which the message was received
*/
void ScheduleDsaRsp (ServiceFlow *serviceFlow, Cid cid);
Ptr<WimaxNetDevice> m_device; ///< the device
uint32_t m_sfidIndex; ///< SFID index
uint8_t m_maxDsaRspRetries; ///< maximum number of DSA response retries
EventId m_dsaAckTimeoutEvent; ///< DSA ack timeout event
Cid m_inuseScheduleDsaRspCid; ///< in use schedule DSA response CID
};
} // namespace ns3
#endif /* BS_SERVICE_FLOW_MANAGER_H */
|