This file is indexed.

/usr/include/ns3.27/ns3/default-channel-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
132
133
134
135
136
137
138
139
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
 * 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: Junling Bu <linlinjavaer@gmail.com>
 */
#ifndef DEFAULT_CHANNEL_SCHEDULER_H
#define DEFAULT_CHANNEL_SCHEDULER_H

#include "wave-net-device.h"
namespace ns3 {
class WaveNetDevice;

/**
 * \ingroup wave
 * \brief This class uses a simple mechanism to assign channel access with following features:
 * (1) only in the context of single-PHY device;
 * (2) FCFS (First come First service) strategy, which seems against the description of
 * the standard (preemptive strategy).
 */
class DefaultChannelScheduler : public ChannelScheduler
{
public:
  /**
   * \brief Get the type ID.
   * \return the object TypeId
   */
  static TypeId GetTypeId (void);
  DefaultChannelScheduler ();
  virtual ~DefaultChannelScheduler ();

  /**
   * \param device enable channel scheduler associated with WaveNetDevice
   */
  virtual void SetWaveNetDevice (Ptr<WaveNetDevice> device);
  /**
   * \param channelNumber the specified channel number
   * \return  the type of current assigned channel access for the specific channel.
   */
  virtual enum ChannelAccess GetAssignedAccessType (uint32_t channelNumber) const;

  /**
   * Notify CCH slot start
   * \param duration the CCH slot duration
   */
  void NotifyCchSlotStart (Time duration);
  /**
   * Notify SCH slot start
   * \param duration the SCH slot duration
   */
  void NotifySchSlotStart (Time duration);
  /**
   * Notify guard slot start
   * \param duration the CCH slot duration
   * \param cchi if true, switch to next channel
   */
  void NotifyGuardSlotStart (Time duration, bool cchi);
private:
  virtual void DoInitialize (void);
  virtual void DoDispose (void);
  /**
   * \param channelNumber the specific channel
   * \param immediate indicate whether channel switch to channel
   * \return whether the channel access is assigned successfully
   *
   * This method will assign alternating access for SCHs and CCH.
   */
  virtual bool AssignAlternatingAccess (uint32_t channelNumber, bool immediate);
  /**
   * \param channelNumber the specific channel
   * \param immediate indicate whether channel switch to channel
   * \return whether the channel access is assigned successfully
   *
   * This method will assign continuous SCH access CCH.
   */
  virtual bool AssignContinuousAccess (uint32_t channelNumber, bool immediate);
  /**
   * \param channelNumber the specific channel
   * \param immediate indicate whether channel switch to channel
   * \return whether the channel access is assigned successfully
   *
   * This method will assign extended SCH access for SCHs.
   */
  virtual bool AssignExtendedAccess (uint32_t channelNumber, uint32_t extends, bool immediate);
  /**
   * This method will assign default CCH access for CCH.
   * \return whether the channel access is assigned successfully
   */
  virtual bool AssignDefaultCchAccess (void);
  /**
   * \param channelNumber indicating for which channel should release
   * the assigned channel access resource.
   * \return whether the channel access is released successfully
   */
  virtual bool ReleaseAccess (uint32_t channelNumber);
  /**
   * \param curChannelNumber switch from MAC activity for current channel
   * \param nextChannelNumber switch to MAC activity for next channel
   */
  void SwitchToNextChannel (uint32_t curChannelNumber, uint32_t nextChannelNumber);

  Ptr<ChannelManager> m_manager; ///< channel manager
  Ptr<ChannelCoordinator> m_coordinator; ///< channel coordinator
  Ptr<WifiPhy> m_phy; ///< Phy

  /**
   *  when m_channelAccess is ContinuousAccess, m_channelNumber
   *   is continuous channel number;
   *  when m_channelAccess is AlternatingAccess, m_channelNumber
   *   is SCH channel number, another alternating channel is CCH;
   *  when m_channelAccess is ExtendedAccess, m_channelNumber
   *   is extended access, extends is the number of extends access.
   *  when m_channelAccess is DefaultCchAccess, m_channelNumber is CCH.
   */
  uint32_t m_channelNumber; ///< channel number
  uint32_t m_extend; ///< extend
  EventId m_extendEvent; ///< extend event
  enum ChannelAccess m_channelAccess; ///< channel access

  EventId m_waitEvent; ///< wait event
  uint32_t m_waitChannelNumber; ///< wait channel number
  uint32_t m_waitExtend; ///< wait extend

  Ptr<ChannelCoordinationListener> m_coordinationListener; ///< coordination listener
};

}
#endif /* DEFAULT_CHANNEL_SCHEDULER_H */