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
|
/*
* Copyright (c) 2000-2002, by the Rector and Board of Visitors of the
* University of Virginia.
* All rights reserved.
*
* Redistribution and use in source and binary forms,
* with or without modification, are permitted provided
* that the following conditions are met:
*
* Redistributions of source code must retain the above
* copyright notice, this list of conditions and the following
* disclaimer.
*
* Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
*
* Neither the name of the University of Virginia nor the names
* of its contributors may be used to endorse or promote products
* derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
* OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
*
* Marker module for JoBS (and WTP).
*
* Authors: Constantinos Dovrolis <dovrolis@mail.eecis.udel.edu>,
* Nicolas Christin <nicolas@cs.virginia.edu>, 2000-2002
*
* $Id: demarker.h,v 1.1 2003/02/02 22:18:22 xuanc Exp $
*/
#ifndef DEMARKER_H
#define DEMARKER_H
#define START_STATISTICS 0.0 // When do we start writing the delays? (sec)
#define NO_CLASSES 4 // This number cannot be changed
// w/o modifying the code.
// This is, again, a prototype
// implementation...
#define VERBOSE 1 // Write e2e delay of packet in trace file
// (per class)
#define QUIET 2 // Do not do anything basically
class Demarker: public Queue {
public:
Demarker();
virtual int command(int argc, const char*const* argv);
void enque(Packet*);
Packet* deque();
double demarker_arrvs_[NO_CLASSES+1];
protected:
int demarker_type_; // Demarker Type
PacketQueue *q_; // Underlying FIFO queue
FILE* delay_tr_[NO_CLASSES+1];// Delay trace per class
char* file_name_; // Trace filename
private:
int link_id_;
double arrived_Bits_[NO_CLASSES+1];
double monitoring_window_;
double last_monitor_update_;
};
#endif /* DEMARKER_H */
|