demarker.h
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:3k
源码类别:

通讯编程

开发平台:

Visual C++

  1. /*
  2.  * Copyright (c) 2000-2002, by the Rector and Board of Visitors of the 
  3.  * University of Virginia.
  4.  * All rights reserved.
  5.  *
  6.  * Redistribution and use in source and binary forms, 
  7.  * with or without modification, are permitted provided 
  8.  * that the following conditions are met:
  9.  *
  10.  * Redistributions of source code must retain the above 
  11.  * copyright notice, this list of conditions and the following 
  12.  * disclaimer. 
  13.  *
  14.  * Redistributions in binary form must reproduce the above 
  15.  * copyright notice, this list of conditions and the following 
  16.  * disclaimer in the documentation and/or other materials provided 
  17.  * with the distribution. 
  18.  *
  19.  * Neither the name of the University of Virginia nor the names 
  20.  * of its contributors may be used to endorse or promote products 
  21.  * derived from this software without specific prior written 
  22.  * permission. 
  23.  *
  24.  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
  25.  * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
  26.  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
  27.  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
  28.  * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE 
  29.  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, 
  30.  * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
  31.  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
  32.  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 
  33.  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
  34.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
  35.  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 
  36.  * THE POSSIBILITY OF SUCH DAMAGE.
  37.  */
  38. /*
  39.  *                                                                     
  40.  * Marker module for JoBS (and WTP).
  41.  *                                                                     
  42.  * Authors: Constantinos Dovrolis <dovrolis@mail.eecis.udel.edu>, 
  43.  *          Nicolas Christin <nicolas@cs.virginia.edu>, 2000-2002       
  44.  *       
  45.  * $Id: demarker.h,v 1.1 2003/02/02 22:18:22 xuanc Exp $
  46.  */
  47. #ifndef DEMARKER_H
  48. #define DEMARKER_H
  49. #define START_STATISTICS 0.0 // When do we start writing the delays? (sec)
  50. #define NO_CLASSES  4 // This number cannot be changed 
  51. // w/o modifying the code. 
  52. // This is, again, a prototype 
  53. // implementation...
  54. #define VERBOSE 1 // Write e2e delay of packet in trace file 
  55. // (per class)
  56. #define QUIET 2 // Do not do anything basically
  57. class Demarker: public Queue {
  58. public:
  59. Demarker();
  60. virtual int command(int argc, const char*const* argv); 
  61. void  enque(Packet*);
  62. Packet* deque();
  63. double  demarker_arrvs_[NO_CLASSES+1];
  64. protected:
  65. int  demarker_type_; // Demarker Type
  66. PacketQueue *q_; // Underlying FIFO queue 
  67. FILE* delay_tr_[NO_CLASSES+1];// Delay trace per class
  68. char* file_name_; // Trace filename
  69. private:
  70. int link_id_;
  71. double arrived_Bits_[NO_CLASSES+1];
  72. double monitoring_window_;
  73. double last_monitor_update_;
  74. };
  75. #endif /* DEMARKER_H */