00001
00009 #ifndef EVENT_MANAGER_H_
00010 #define EVENT_MANAGER_H_
00011
00012 #include "event_base.h"
00013
00014 namespace blue_sky
00015 {
00016
00017 template <typename strategy_t>
00018 class event_base;
00019
00020 template <typename strategy_t>
00021 class reservoir;
00022
00027 template <typename strategy_t>
00028 class BS_API_PLUGIN event_manager : public objbase
00029 {
00030
00031
00032
00033 public:
00034 typedef event_base <strategy_t> event_base_t;
00035 typedef smart_ptr < event_base_t > sp_event_base;
00036 typedef reservoir <strategy_t> sp_top;
00037 typedef event_manager<strategy_t> self_t;
00038 typedef self_t this_t;
00039 typedef std::list < sp_event_base > sp_event_base_list;
00040 typedef boost::posix_time::ptime date_t;
00041 typedef std::map <date_t, sp_event_base_list > event_map;
00042
00043
00044
00045
00046
00047 public:
00051 BLUE_SKY_TYPE_DECL(event_manager);
00052
00053 public:
00057 virtual ~event_manager ();
00058
00067 void
00068 process_event (const date_t &date, const std::string &event_name, const std::string &event_params);
00069
00076 void
00077 end_event ();
00078
00087 sp_event_base
00088 create_event(const boost::posix_time::ptime &date, const std::string & event_name, const std::string & event_params);
00089
00090
00091
00092
00093
00094 public:
00095 event_map event_list;
00096
00097 private:
00098 sp_event_base current_event_;
00099 };
00100
00106 bool
00107 well_events_register_type (const blue_sky::plugin_descriptor &pd);
00108
00114 bool
00115 event_manager_register_types (const plugin_descriptor &pd);
00116
00117 }
00118
00119 #endif // #ifndef EVENT_MANAGER_H_