#include <scheduler.hh>
Public Types | |
typedef std::multiset < TimedEvent *, tevent_less > | teventset_t |
typedef std::multiset< IOEvent *, ioevent_less > | ioeventset_t |
Public Member Functions | |
Scheduler (LoopHandler &) | |
~Scheduler () | |
void | insert (TimedEvent *e) |
void | erase (TimedEvent *e) |
void | insert (IOEvent *e) |
void | erase (IOEvent *e) |
template<class E> | |
void | destroy (E *e) |
bool | to_delete () const |
void | loop () |
Private Types | |
typedef Scheduler | This |
Private Member Functions | |
Scheduler (const This &other) | |
This & | operator= (const This &other) |
void | handle_tevents () |
void | handle_ioevents () |
Private Attributes | |
teventset_t | tevent_set_ |
Set of timed events. | |
ioeventset_t | ioevent_set_ |
Set of I/O events. | |
LoopHandler & | loophandler_ |
const Event * | current_event_ |
Currently processed event. | |
bool | delete_ |
Classes | |
struct | ioevent_less |
struct | tevent_less |
typedef Scheduler olsr::sch::Scheduler::This [private] |
typedef std::multiset<TimedEvent*, tevent_less> olsr::sch::Scheduler::teventset_t |
typedef std::multiset<IOEvent*, ioevent_less> olsr::sch::Scheduler::ioeventset_t |
olsr::sch::Scheduler::Scheduler | ( | LoopHandler & | lh | ) | [inline] |
Constructor.
References olsr::sch::internal::install_sighandlers().
olsr::sch::Scheduler::~Scheduler | ( | ) | [inline] |
References destroy(), ioevent_set_, and tevent_set_.
olsr::sch::Scheduler::Scheduler | ( | const This & | other | ) | [inline, private] |
void olsr::sch::Scheduler::insert | ( | TimedEvent * | e | ) | [inline] |
Timed event registering method. Adds the pointer to the timed events set and resets the timer.
References olsr::debug, olsr::utl::TimeVal::diff(), olsr::utl::down(), olsr::sch::Event::name(), olsr::sch::TimedEvent::next(), tevent_set_, and olsr::utl::up().
Referenced by olsr::msg::Message::forward(), olsr::sch::PeriodicEvent_< I >::handle(), olsr::sch::PacketReceiver::handle(), olsr::sch::PacketSender::handle(), olsr::set::TopologySet::insert(), olsr::set::TwoHopNeighborSet::insert(), olsr::set::MIDSet::insert(), olsr::set::InterfaceSet::insert(), olsr::set::HNASet::insert(), olsr::set::DuplicateSet::insert(), olsr::set::CoherenceProxy::insert_link(), main(), olsr::set::upd::LinkUpdater::operator()(), olsr::sch::QolyesterLoopHandler::operator()(), olsr::msg::TCMessage::parse(), olsr::pkt::Packet::parse(), olsr::set::CoherenceProxy::set_mprsel(), and olsr::net::RealInterface::shipout().
void olsr::sch::Scheduler::erase | ( | TimedEvent * | e | ) | [inline] |
References olsr::debug, olsr::utl::TimeVal::diff(), olsr::utl::down(), olsr::sch::Event::name(), olsr::sch::TimedEvent::next(), tevent_set_, and olsr::utl::up().
Referenced by destroy(), olsr::set::TwoHopNeighborSet::insert(), olsr::set::MIDSet::insert(), olsr::set::HNASet::insert(), olsr::set::DuplicateSet::insert(), olsr::set::CoherenceProxy::insert_link(), olsr::set::upd::LinkUpdater::operator()(), olsr::sch::QolyesterLoopHandler::operator()(), olsr::msg::TCMessage::parse(), olsr::pkt::Packet::parse(), and olsr::set::CoherenceProxy::set_mprsel().
void olsr::sch::Scheduler::insert | ( | IOEvent * | e | ) | [inline] |
I/O event registering method. Add the pointer to the I/O events set.
References olsr::debug, olsr::utl::down(), ioevent_set_, olsr::sch::Event::name(), and olsr::utl::up().
void olsr::sch::Scheduler::erase | ( | IOEvent * | e | ) | [inline] |
References olsr::debug, olsr::utl::down(), ioevent_set_, olsr::sch::Event::name(), and olsr::utl::up().
void olsr::sch::Scheduler::destroy | ( | E * | e | ) | [inline] |
References current_event_, delete_, and erase().
Referenced by olsr::net::RealInterface::destroy_all_events(), olsr::set::TopologySet::erase(), olsr::set::TwoHopNeighborSet::erase(), olsr::set::MIDSet::erase(), olsr::set::HNASet::erase(), olsr::set::DuplicateSet::erase(), olsr::sch::PacketSender::handle(), olsr::sch::MessageForwarder::handle(), olsr::set::CoherenceProxy::unset_mprsel(), olsr::net::RealInterface::~RealInterface(), and ~Scheduler().
bool olsr::sch::Scheduler::to_delete | ( | ) | const [inline] |
References delete_.
void olsr::sch::Scheduler::handle_tevents | ( | ) | [inline, private] |
Timed events handling method. To be called from the event loop.
References current_event_, olsr::debug, olsr::utl::deindent(), delete_, olsr::utl::TimeVal::diff(), olsr::utl::down(), olsr::sch::Event::handle(), indent, olsr::sch::Event::name(), olsr::sch::TimedEvent::next(), olsr::utl::TimeVal::now(), tevent_set_, and olsr::utl::up().
Referenced by loop().
void olsr::sch::Scheduler::handle_ioevents | ( | ) | [inline, private] |
I/O events handling method. To be called from the event loop.
References current_event_, olsr::debug, olsr::utl::deindent(), delete_, olsr::utl::down(), olsr::sch::Event::handle(), indent, ioevent_set_, olsr::sch::Event::name(), olsr::sch::PollEvent_< P >::p(), and olsr::utl::up().
Referenced by loop().
void olsr::sch::Scheduler::loop | ( | ) | [inline] |
The main event loop of the scheduler.
References olsr::do_dump_prof, olsr::dump_prof, handle_ioevents(), handle_tevents(), ioevent_set_, loophandler_, olsr::utl::TimeVal::now(), olsr::utl::TimeVal::set_now(), and tevent_set_.
Referenced by main().
teventset_t olsr::sch::Scheduler::tevent_set_ [private] |
LoopHandler& olsr::sch::Scheduler::loophandler_ [private] |
Referenced by loop().
const Event* olsr::sch::Scheduler::current_event_ [private] |
bool olsr::sch::Scheduler::delete_ [private] |
Referenced by destroy(), handle_ioevents(), handle_tevents(), and to_delete().