RTP Trace System
1.0
|
00001 // ########################################################################## 00002 // #### #### 00003 // #### Master Thesis Implementation #### 00004 // #### Management of Layered Variable Bitrate Multimedia Streams over #### 00005 // #### DiffServ with A Priori Knowledge #### 00006 // #### #### 00007 // #### ================================================================ #### 00008 // #### #### 00009 // #### #### 00010 // #### Traffic Policer #### 00011 // #### #### 00012 // #### Version 1.00 -- February 19, 2001 #### 00013 // #### #### 00014 // #### Copyright (C) 2000/2001 Thomas Dreibholz #### 00015 // #### University of Bonn, Department of Computer Science IV #### 00016 // #### EMail: dreibh@iem.uni-due.de #### 00017 // #### WWW: https://www.uni-due.de/~be0001/diplom/index.html #### 00018 // #### #### 00019 // ########################################################################## 00020 00021 00022 #ifndef TRAFFICPOLICER_H 00023 #define TRAFFICPOLICER_H 00024 00025 00026 #include "system.h" 00027 00028 #include <multimap.h> 00029 00030 00031 namespace Coral { 00032 00033 00041 class TrafficPolicer 00042 { 00043 // ====== Constructor/Destructor ========================================= 00044 public: 00048 TrafficPolicer(); 00049 00053 ~TrafficPolicer(); 00054 00055 00056 // ====== Settings ======================================================= 00062 inline card64 getBandwidth() const; 00063 00069 inline void setBandwidth(const card64 bandwidth); 00070 00076 inline double getBufferDelay() const; 00077 00083 inline void setBufferDelay(const double bufferDelay); 00084 00090 inline void setFlush(const bool on); 00091 00092 00093 // ====== Transmission methods =========================================== 00097 void flush(); 00098 00106 bool refreshBuffer(const card8 trafficClass, 00107 const bool doRemapping); 00108 00117 cardinal write(const cardinal bytes, 00118 const card8 trafficClass, 00119 const cardinal headerSize); 00120 00126 void timerEvent(); 00127 00128 00129 00130 // ====== Simulator variables ============================================ 00131 static card64 SimulatorTime; 00132 00133 00134 // ====== Private data =================================================== 00135 private: 00136 card64 SendTimeStamp; 00137 card64 Bandwidth; 00138 double BufferDelay; 00139 bool ExceedFlush; 00140 00141 struct TrafficPolicerPacket { 00142 card64 SendTimeStamp; 00143 card64 Bandwidth; 00144 double BufferDelay; 00145 cardinal HeaderSize; 00146 cardinal PayloadSize; 00147 card8 TrafficClass; 00148 char Data[0]; 00149 }; 00150 multimap<card64,TrafficPolicerPacket*> PacketSet; 00151 }; 00152 00153 00154 } 00155 00156 00157 #include "trafficpolicer.icc" 00158 00159 00160 #endif