Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

Scheduler Class Reference

#include <Scheduler.h>

List of all members.

Public Member Functions

void clear ()
void clear ()
GPStime elapsed_time () const
GPStime elapsed_time () const
void endLogging ()
void endLogging ()
void printOn (std::ostream &out) const
void printOn (std::ostream &out) const
bool running ()
bool running ()
void schedule (double deltaT, ScheduledEvent *event)
void schedule (double deltaT, ScheduledEvent *event)
 Scheduler ()
 Scheduler ()
void setLog (std::ostream &out)
void setLog (std::ostream &out)
void start ()
void start ()
void stop ()
void stop ()
 ~Scheduler ()
 ~Scheduler ()

Static Public Member Functions

Schedulerinstance ()
Schedulerinstance ()

Private Attributes

std::ostreamm_log
std::ostreamm_log
bool m_running
GPStime m_time

Static Private Attributes

Schedulers_instance
Schedulers_instance = 0


Constructor & Destructor Documentation

Scheduler::Scheduler  ) 
 

00012 : m_time(GPStime(0))
00013 , m_running(false)
00014 , m_log(0)
00015 {
00016     assert( s_instance==0);  // require only one
00017     s_instance = this;
00018 }

Scheduler::~Scheduler  ) 
 

00021 {
00022     clear();
00023 }

Scheduler::Scheduler  ) 
 

Scheduler::~Scheduler  ) 
 


Member Function Documentation

void Scheduler::clear  ) 
 

void Scheduler::clear  ) 
 

00025 {
00026     while( ! empty() ) {
00027         iterator f = begin();
00028         delete (*f).second;
00029         erase(f);
00030     }
00031     m_time = 0;
00032 }

GPStime Scheduler::elapsed_time  )  const [inline]
 

00061 {return m_time;}

GPStime Scheduler::elapsed_time  )  const [inline]
 

00061 {return m_time;}

void Scheduler::endLogging  ) 
 

void Scheduler::endLogging  ) 
 

00087 {
00088     m_log = 0;
00089 }

Scheduler* Scheduler::instance  )  [static]
 

Scheduler * Scheduler::instance  )  [static]
 

00009 {return (s_instance) ? s_instance : new Scheduler();}

void Scheduler::printOn std::ostream out  )  const
 

void Scheduler::printOn std::ostream out  )  const
 

00067 {
00068     out << "\nScheduler stack: current time = " << elapsed_time() << std::endl;
00069     out << "\ttime\tclass name\n";
00070     for( const_iterator it= begin(); it !=end(); ++it){
00071         std::pair<double, ScheduledEvent*> entry = *it;
00072         out << "\t" << entry.first << '\t' << entry.second->name() << std::endl ;
00073     }
00074     out << std::endl;
00075 
00076 }

bool Scheduler::running  )  [inline]
 

00055 {return m_running;}

bool Scheduler::running  )  [inline]
 

00055 {return m_running;}

void Scheduler::schedule double  deltaT,
ScheduledEvent event
 

void Scheduler::schedule double  deltaT,
ScheduledEvent event
 

00036 {
00037     insert(std::make_pair(m_time+deltaT, event));
00038 }

void Scheduler::setLog std::ostream out  ) 
 

void Scheduler::setLog std::ostream out  ) 
 

00079 {
00080     m_log = &out;
00081     out << "\nSchedule event: current time = " << elapsed_time() << std::endl;
00082     out << "\ttime\tEvent\n";
00083 
00084 }

void Scheduler::start  ) 
 

void Scheduler::start  ) 
 

00041 {
00042     m_running = true;
00043 
00044     while( !empty() && m_running ) {
00045 
00046         // get the entry at the head of the queue
00047         std::pair<double, ScheduledEvent*> entry = *begin();
00048 
00049         // set current time, remove the entry
00050         m_time = entry.first;
00051         erase(begin());
00052 
00053         // run, then delete it
00054         if( m_log ) {
00055             (*m_log) << "\t" << entry.first << '\t' << entry.second->name() << std::endl ;
00056         }
00057         entry.second->execute();
00058         delete entry.second;
00059     }
00060 }

void Scheduler::stop  ) 
 

void Scheduler::stop  ) 
 

00063 {
00064     m_running = false;
00065 }


Member Data Documentation

std::ostream* Scheduler::m_log [private]
 

std::ostream* Scheduler::m_log [private]
 

bool Scheduler::m_running [private]
 

GPStime Scheduler::m_time [private]
 

Scheduler* Scheduler::s_instance [static, private]
 

Scheduler * Scheduler::s_instance = 0 [static, private]
 


The documentation for this class was generated from the following files:
Generated on Wed Feb 2 18:49:23 2011 for BOSS6.5.5 by  doxygen 1.3.9.1