#include <smac.h>
Inheritance diagram for SmacCounterTimer:


Public Types | |
| enum | TimerStatus { TIMER_IDLE, TIMER_PENDING, TIMER_HANDLING } |
Public Member Functions | |
| SmacCounterTimer (SMAC *a, int i) | |
| void | sched (double t) |
| void | expire (Event *e) |
| double | timeToSleep () |
| int | busy () |
| void | resched (double delay) |
| void | cancel () |
| void | force_cancel () |
| int | status () |
Protected Member Functions | |
| virtual void | handle (Event *) |
Protected Attributes | |
| int | index_ |
| int | value_ |
| int | syncTime_ |
| int | dataTime_ |
| int | listenTime_ |
| int | sleepTime_ |
| int | cycleTime_ |
| double | tts_ |
| double | stime_ |
| SMAC * | a_ |
| int | status_ |
| Event | event_ |
Friends | |
| class | SMAC |
|
|
Definition at line 66 of file timer-handler.h.
00066 { TIMER_IDLE, TIMER_PENDING, TIMER_HANDLING };
|
|
||||||||||||
|
Definition at line 321 of file smac.h. References index_.
|
|
|
Definition at line 64 of file smac.cc. References TimerHandler::status_, and TimerHandler::TIMER_PENDING. Referenced by SMAC::checkToSend(), SMAC::handleCounterTimer(), and SMAC::recv().
00065 {
00066 if (status_ != TIMER_PENDING)
00067 return 0;
00068 else
00069 return 1;
00070 }
|
|
Here is the call graph for this function:

|
|
Implements SmacTimer. Definition at line 169 of file smac.cc. References SmacTimer::a_, SMAC::handleCounterTimer(), index_, stime_, and tts_.
00169 {
00170 tts_ = stime_ = 0;
00171 a_->handleCounterTimer(index_);
00172 }
|
Here is the call graph for this function:

|
|
Definition at line 60 of file timer-handler.h. References TimerHandler::_cancel(), TimerHandler::status_, TimerHandler::TIMER_IDLE, and TimerHandler::TIMER_PENDING. Referenced by TcpAgent::cancel_rtx_timer(), TcpSessionAgent::cancel_rtx_timer(), TcpFsAgent::cancel_rtx_timer(), AbsTcpAgent::cancel_timer(), TcpAgent::cancel_timers(), TcpSessionAgent::cancel_timers(), FullTcpAgent::cancel_timers(), TcpFsAgent::cancel_timers(), SinkAgent::command(), UnslottedAlohaMac::end_of_contention(), GAFAgent::processDiscoveryMsg(), RTPAgent::rate_change(), TfrcAgent::stop(), RTPAgent::stop(), and SinkAgent::stop().
00060 { // cancel!
00061 if (status_ == TIMER_PENDING) {
00062 _cancel();
00063 status_ = TIMER_IDLE;
00064 }
00065 }
|
Here is the call graph for this function:

|
|
Implements Handler. Reimplemented in EmpFtpTrafSession, EmpWebPage, EmpWebTrafSession, HBTimer, WebPage, and WebTrafSession. Definition at line 69 of file timer-handler.cc. References abort(), TimerHandler::expire(), TimerHandler::status_, TimerHandler::TIMER_HANDLING, TimerHandler::TIMER_IDLE, and TimerHandler::TIMER_PENDING. Referenced by WebTrafSession::handle(), WebPage::handle(), HBTimer::handle(), EmpWebTrafSession::handle(), EmpWebPage::handle(), and EmpFtpTrafSession::handle().
00070 {
00071 if (status_ != TIMER_PENDING) // sanity check
00072 abort();
00073 status_ = TIMER_HANDLING;
00074 expire(e);
00075 // if it wasn't rescheduled, it's done
00076 if (status_ == TIMER_HANDLING)
00077 status_ = TIMER_IDLE;
00078 }
|
Here is the call graph for this function:

|
Here is the call graph for this function:

|
|
Reimplemented from TimerHandler. Definition at line 128 of file smac.cc. References CLKTICK2SEC, Scheduler::clock(), dataTime_, Scheduler::instance(), listenTime_, TimerHandler::resched(), TimerHandler::sched(), sleepTime_, TimerHandler::status_, stime_, syncTime_, TimerHandler::TIMER_IDLE, tts_, and value_. Referenced by SMAC::handleCounterTimer(), SMAC::handleSYNC(), and SMAC::setMySched().
00128 {
00129 // the cycle timer assumes that all time shall be scheduled with time "left to sleep"
00130 // and not the absolute time for a given state (sleep, sync or data). Thus inorder
00131 // to schedule for a sleep state, need to schedule with aggregate time CYCLETIME
00132 // (sleeptime+synctime+dadatime).
00133 // Similarly for sync state, schedule with listenTime_ (synctime+datattime)
00134 // This is implemented to be in step with the counter used in actual smac.
00135
00136 tts_ = time; // time before it goes to sleep again
00137 stime_ = Scheduler::instance().clock();
00138
00139 if (time <= CLKTICK2SEC(cycleTime_) && time > CLKTICK2SEC(listenTime_)) { // in sleep state
00140 value_ = sleepTime_;
00141 if (status_ == TIMER_IDLE)
00142 TimerHandler::sched(time - CLKTICK2SEC(listenTime_));
00143 else
00144 TimerHandler::resched(time - CLKTICK2SEC(listenTime_));
00145
00146 } else if ( time <= CLKTICK2SEC(listenTime_) && time > CLKTICK2SEC(dataTime_)) { // in sync state
00147 value_ = syncTime_;
00148 if (status_ == TIMER_IDLE)
00149 TimerHandler::sched(time - CLKTICK2SEC(dataTime_));
00150 else
00151 TimerHandler::resched(time - CLKTICK2SEC(dataTime_));
00152
00153 } else { // in data state
00154 assert(time <= CLKTICK2SEC(dataTime_));
00155 value_ = dataTime_;
00156 if (status_ == TIMER_IDLE)
00157 TimerHandler::sched(time);
00158 else
00159 TimerHandler::resched(time);
00160
00161 }
00162
00163 }
|
Here is the call graph for this function:

|
|
|
Definition at line 165 of file smac.cc. References Scheduler::clock(), Scheduler::instance(), stime_, and tts_. Referenced by SMAC::handleSYNC(), and SMAC::sendSYNC().
00165 {
00166 return ((stime_ + tts_) - Scheduler::instance().clock()) ;
00167 }
|
Here is the call graph for this function:

|
|
|
|
|
Definition at line 260 of file smac.h. Referenced by expire(), SmacCsTimer::expire(), SmacNeighNavTimer::expire(), SmacNavTimer::expire(), SmacSendTimer::expire(), SmacRecvTimer::expire(), SmacGeneTimer::expire(), and SmacTimer::SmacTimer(). |
|
|
Definition at line 332 of file smac.h. Referenced by SMAC::SMAC(). |
|
|
Definition at line 329 of file smac.h. Referenced by sched(), and SMAC::SMAC(). |
|
|
Definition at line 75 of file timer-handler.h. Referenced by TimerHandler::_cancel(), TimerHandler::_sched(), WebPage::start(), and EmpWebPage::start(). |
|
|
Definition at line 326 of file smac.h. Referenced by expire(), and SmacCounterTimer(). |
|
|
Definition at line 330 of file smac.h. Referenced by sched(), and SMAC::SMAC(). |
|
|
Definition at line 331 of file smac.h. Referenced by sched(), and SMAC::SMAC(). |
|
|
|
Definition at line 334 of file smac.h. Referenced by expire(), sched(), and timeToSleep(). |
|
|
Definition at line 328 of file smac.h. Referenced by sched(), and SMAC::SMAC(). |
|
|
Definition at line 333 of file smac.h. Referenced by expire(), sched(), and timeToSleep(). |
|
|
Definition at line 327 of file smac.h. Referenced by SMAC::handleCounterTimer(), and sched(). |
1.3.3