This file is indexed.

/usr/include/ns3.27/ns3/bs-scheduler.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
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
 * Copyright (c) 2007,2008 INRIA
 *
 * 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
 *
 * Author: Jahanzeb Farooq <jahanzeb.farooq@sophia.inria.fr>
 */

/* BS outbound scheduler as per in Section 6.3.5.1 */

#ifndef BS_SCHEDULER_H
#define BS_SCHEDULER_H

#include <list>
#include "ns3/packet.h"
#include "wimax-phy.h"
#include "ns3/packet-burst.h"
#include "dl-mac-messages.h"
#include "service-flow.h"

namespace ns3 {

class BaseStationNetDevice;
class GenericMacHeader;
class WimaxConnection;
class Cid;

/**
 * \ingroup wimax
 */
class BSScheduler : public Object
{
public:
  BSScheduler ();
  /**
   * Constructor
   *
   * \param bs base station device
   */
  BSScheduler (Ptr<BaseStationNetDevice> bs);
  ~BSScheduler (void);

  /**
   * \brief Get the type ID.
   * \return the object TypeId
   */
  static TypeId GetTypeId (void);

  /**
   * \brief This function returns all the downlink bursts scheduled for the next
   * downlink sub-frame
   * \returns  all the downlink bursts scheduled for the next downlink sub-frame
   */
  virtual std::list<std::pair<OfdmDlMapIe*, Ptr<PacketBurst> > >*
  GetDownlinkBursts (void) const = 0;
  /**
   * \brief This function adds a downlink burst to the list of downlink bursts
   * scheduled for the next downlink sub-frame
   * \param connection a pointer to connection in wich the burst will be sent
   * \param diuc downlink iuc
   * \param modulationType the modulation type of the burst
   * \param burst the downlink burst to add to the downlink sub frame
   */
  virtual void AddDownlinkBurst (Ptr<const WimaxConnection> connection,
                                 uint8_t diuc,
                                 WimaxPhy::ModulationType modulationType,
                                 Ptr<PacketBurst> burst) = 0;

  /**
   * \brief the scheduling function for the downlink subframe.
   */
  virtual void Schedule (void) = 0;
  /**
   * \brief Selects a connection from the list of connections having packets to be sent .
   * \param connection will point to a connection that have packets to be sent
   * \returns false if no connection has packets to be sent, true otherwise
   */
  virtual bool SelectConnection (Ptr<WimaxConnection> &connection) = 0;

  /**
   * \brief Creates a downlink UGS burst
   * \param serviceFlow the service flow of the burst
   * \param modulationType the modulation type to be used for the burst
   * \param availableSymbols maximum number of OFDM symbols to be used by the burst
   * \returns a Burst (list of packets)
   */
  virtual Ptr<PacketBurst> CreateUgsBurst (ServiceFlow *serviceFlow,
                                           WimaxPhy::ModulationType modulationType,
                                           uint32_t availableSymbols) = 0;

  /**
   * \brief Get the base station.
   * \returns the base station net device
   */
  virtual Ptr<BaseStationNetDevice> GetBs (void);
  /**
   * \brief Set the base station.
   * \param bs the base station net device
   */
  virtual void SetBs (Ptr<BaseStationNetDevice> bs);

  /**
   * \brief Check if the packet fragmentation is possible for transport connection.
   * \param connection the downlink connection
   * \param availableSymbols maximum number of OFDM symbols to be used by the burst
   * \param modulationType the modulation type to be used for the burst
   * \returns false if packet fragmentation is not possible, true otherwise
   */
  bool CheckForFragmentation (Ptr<WimaxConnection> connection,
                              int availableSymbols,
                              WimaxPhy::ModulationType modulationType);
private:
  Ptr<BaseStationNetDevice> m_bs; ///< base station
  std::list<std::pair<OfdmDlMapIe*, Ptr<PacketBurst> > > *m_downlinkBursts; ///< down link bursts
};

} // namespace ns3

#endif /* BS_SCHEDULER_H */