burst.cc
上传用户:hzie11
上传日期:2013-10-07
资源大小:1487k
文件大小:3k
源码类别:

网络

开发平台:

C/C++

  1. /* This software was developed at the National Institute of Standards and
  2.  * Technology by employees of the Federal Government in the course of
  3.  * their official duties. Pursuant to title 17 Section 105 of the United
  4.  * States Code this software is not subject to copyright protection and
  5.  * is in the public domain.
  6.  * NIST assumes no responsibility whatsoever for its use by other parties,
  7.  * and makes no guarantees, expressed or implied, about its quality,
  8.  * reliability, or any other characteristic.
  9.  * <BR>
  10.  * We would appreciate acknowledgement if the software is used.
  11.  * <BR>
  12.  * NIST ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" CONDITION AND
  13.  * DISCLAIM ANY LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING
  14.  * FROM THE USE OF THIS SOFTWARE.
  15.  * </PRE></P>
  16.  * @author  rouil
  17.  */
  18. #include "burst.h"
  19. /**
  20.  * Creates a burst
  21.  * @param phypdu The PhyPdu where it is located
  22.  */
  23. Burst::Burst (PhyPdu *phypdu) : cid_(-1), duration_(0), 
  24. starttime_(0),iuc_(-1)
  25. {
  26.   assert (phypdu);
  27.   phypdu_ = phypdu;
  28.   queue_ = NULL;
  29. }
  30. /*
  31.  * Delete the object
  32.  */
  33. Burst::~Burst () 
  34. {
  35.   //delete packets in queue
  36.   if (queue_!=NULL) {
  37.     for (Packet *p = dequeue(); p ; p=dequeue()) {
  38.       Packet::free (p);
  39.     }
  40.     delete (queue_);
  41.   }
  42. /**
  43.  * Set burst CID
  44.  * @param cid The burst CID
  45.  */
  46. void Burst::setCid( int cid )
  47. {
  48.   cid_ = cid;
  49. }
  50. /**
  51.  * Return the CID for this burst
  52.  * @return the CID for this burst
  53.  */
  54. int Burst::getCid( )
  55. {
  56.   return cid_;
  57. }
  58. /**
  59.  * Return the burst duration in units of OFDM symbols
  60.  * @return the burst duration 
  61.  */
  62. int Burst::getDuration( )
  63. {
  64.   return duration_;
  65. }
  66. /**
  67.  * Set the duration of the burst in units of OFDM symbols
  68.  * @param duration The burst duration
  69.  */
  70. void Burst::setDuration (int duration)
  71. {
  72.   duration_=duration;
  73. }
  74. /**
  75.  * Set burst IUC
  76.  * @param iuc The burst IUC
  77.  */
  78. void Burst::setIUC( int iuc )
  79. {
  80.   iuc_ = iuc;
  81. }
  82. /**
  83.  * Return the Interval Usage Code
  84.  * @return the burst start time
  85.  */
  86. int Burst::getIUC( )
  87. {
  88.   return iuc_;
  89. }
  90. /**
  91.  * Set burst start time in units of symbol duration
  92.  * @param starttime the burst start time
  93.  */
  94. void Burst::setStarttime( int starttime )
  95. {
  96.   assert (starttime >= 0);
  97.   starttime_ = starttime;
  98. }
  99. /**
  100.  * Return the burst start time in units of symbol duration
  101.  * @return the burst start time
  102.  */
  103. int Burst::getStarttime( )
  104. {
  105.   return starttime_;
  106. }
  107. /**
  108.  * Enqueue the given packet
  109.  * @param p The packet to enqueue
  110.  */
  111. void Burst::enqueue (Packet * p) 
  112. {
  113.   if (queue_ == NULL) {
  114.     //this is the first packet we enqueue, create queue
  115.     queue_ = new PacketQueue();
  116.   }
  117.   queue_->enque (p);
  118. }
  119. /**
  120.  * Dequeue a packet from the queue
  121.  * @param p The packet to enqueue
  122.  */
  123. Packet * Burst::dequeue () 
  124. {
  125.   if (queue_==NULL) //in case there was never an enqueue
  126.     return NULL;
  127.   return queue_->deque ();
  128. }
  129. /**
  130.  * Trigger the timer to send packets for this burst
  131.  * @param time The time the trigger expires
  132.  */
  133. /*
  134. void Burst::trigger_timer (double time)
  135. {
  136.   //assert (NOW < time);
  137.   timer_.resched (time);
  138. }
  139. */