INET Framework for OMNeT++/OMNEST
STPTimer.h
Go to the documentation of this file.
00001 /*
00002  * STPTimer.h
00003  *
00004  *  Created on: 19.4.2011
00005  *      Author: aranel
00006  */
00007 
00008 #ifndef STPTIMER_H_
00009 #define STPTIMER_H_
00010 
00011 #define STPTIMERCOUNT 8
00012 
00013 class STPTimer
00014 {
00015   public:
00016         STPTimer();
00017         virtual ~STPTimer();
00018 
00019         typedef enum {
00020                 NONE = -1,
00021                 EDGEDELAYWHILE = 0,
00022                 FDWHILE = 1,
00023                 HELLOWHEN = 2,
00024                 // MDELAYWHILE = 3,
00025                 RBWHILE = 4,
00026                 RCDVINFOWHILE = 5,
00027                 RRWHILE = 6,
00028                 TCWHILE = 7,
00029         } eSTPTimer;
00030 
00031 
00032         void setInitValue(eSTPTimer timer, int value);
00033         int getInitValue(eSTPTimer timer);
00034         int getValue(eSTPTimer timer);
00035 
00036 
00037         bool existTimedOut();
00038         bool isTimedOut(eSTPTimer timer);
00039 
00040   private:
00041 
00042 /* --- TIMERS --- */
00043         int edgeDelayWhile; // 17.17.1 considering edge port timer
00044         int fdWhile; // 17.17.2 forwarding port state transition delay
00045         int helloWhen; // 17.17.3 hello timer, at least one BPDU at helloWhen
00046         // int mdelayWhile; // 17.17.4 protocol migration timer (NOT CONSIDERED)
00047         int rbWhile; // 17.17.5 recent backup, twice as hello timer, while port is backup
00048         int rcdvInfoWhile; // 17.17.6 received info, used for aging received info by this port
00049         int rrWhile; // 17.17.7 recent root
00050         int tcWhile; // 17.17.8 topology change, TCN are sent while this timer running
00051 /* --- INITIAL VALUES --- */
00052         int initEdgeDelayWhile;
00053         int initFdWhile;
00054         int initHelloWhen;
00055         // int initMdelayWhile;
00056         int initRbWhile; /* (!) TWICE AS HELLO TIMER, but for unify */
00057         int initRcdvInfoWhile;
00058         int initRrWhile;
00059         int initTcWhile;
00060 
00061 
00062 /* --- INDEX TIMER ADDRESSING --- */
00063         int * timerValue[STPTIMERCOUNT];
00064         int * initValue[STPTIMERCOUNT];
00065 
00066         /* set default values for initValues */
00067         void setDefaultInitValues();
00068 
00069 
00070   protected:
00071 
00072 
00073 
00074 
00075 };
00076 
00077 #endif /* STPTIMER_H_ */