thread.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __PLUGINS_TTMAINLOOP_THREAD_H_
00024 #define __PLUGINS_TTMAINLOOP_THREAD_H_
00025
00026 #include <core/threading/thread.h>
00027 #include <aspect/clock.h>
00028 #include <aspect/logging.h>
00029 #include <aspect/configurable.h>
00030 #include <aspect/blocked_timing.h>
00031 #include <aspect/mainloop.h>
00032
00033 namespace fawkes {
00034 class Time;
00035 class TimeWait;
00036 class TimeTracker;
00037 }
00038
00039 class TimeTrackerMainLoopThread
00040 : public fawkes::Thread,
00041 public fawkes::LoggingAspect,
00042 public fawkes::ClockAspect,
00043 public fawkes::ConfigurableAspect,
00044 public fawkes::MainLoopAspect
00045 {
00046 public:
00047 TimeTrackerMainLoopThread();
00048 virtual ~TimeTrackerMainLoopThread();
00049
00050 virtual void init();
00051 virtual void loop();
00052 virtual void finalize();
00053
00054
00055 protected: virtual void run() { Thread::run(); }
00056
00057 private:
00058 float __output_interval;
00059 fawkes::Time *__last_outp_time;
00060 fawkes::Time *__now;
00061
00062 fawkes::TimeWait *__time_wait;
00063
00064 std::list<std::string> __recovered_threads;
00065 unsigned int __desired_loop_time_usec;
00066 float __desired_loop_time_sec;
00067 unsigned int __max_thread_time_usec;
00068 fawkes::Time *__loop_start;
00069 fawkes::Time *__loop_end;
00070
00071 fawkes::TimeTracker *__tt;
00072 unsigned int __tt_loopcount;
00073 unsigned int __ttc_pre_loop;
00074 unsigned int __ttc_sensor;
00075 unsigned int __ttc_worldstate;
00076 unsigned int __ttc_think;
00077 unsigned int __ttc_skill;
00078 unsigned int __ttc_act;
00079 unsigned int __ttc_post_loop;
00080 unsigned int __ttc_netproc;
00081 unsigned int __ttc_full_loop;
00082 unsigned int __ttc_real_loop;
00083
00084 };
00085
00086
00087 #endif