Changeset 4884 for branches/erijo-dev
- Timestamp:
- 04/05/07 03:04:10 (20 months ago)
- Location:
- branches/erijo-dev/licq
- Files:
-
- 2 added
- 3 modified
-
licq/eventdispatcher.h (added)
-
src/daemon.cpp (modified) (3 diffs)
-
src/daemon.h (modified) (3 diffs)
-
src/event/CMakeLists.txt (modified) (1 diff)
-
src/event/eventdispatcher.cpp (added)
Legend:
- Unmodified
- Added
- Removed
-
branches/erijo-dev/licq/src/daemon.cpp
r4882 r4884 23 23 #include <time.h> 24 24 25 void aEventHandler(const Licq::IEventPtr& event) 26 { 27 Licq::ILog* log; 28 int count; 29 if (event->getProperty("ILog", &log) && event->getProperty("count", &count)) 30 { 31 log->info("in aEventHandler with event #%lu and count %d", 32 event->getId(), count); 33 } 34 } 35 25 36 void Licq::TDaemon::onEvent(const IEventPtr& event) 26 37 { 27 38 Log.info("TDaemon::onEvent(%s [%lu])", event->getName().c_str(), event->getId()); 28 TEventHandlers::iterator handler = EventHandlers.find(event->getName());29 if (handler != EventHandlers.end())30 {31 Log.debug("Calling handler for %s", event->getName().c_str());32 (this->*(handler->second))(event);33 }34 39 } 35 40 … … 60 65 event = IEvent::create(0, "invalid:event"); 61 66 pushEvent(event); 67 68 event = IEvent::create(0, "log:event"); 69 event->setProperty("ILog", (Licq::ILog*)&Log); 70 event->setProperty("count", count); 71 pushEvent(event); 62 72 } 63 73 … … 83 93 84 94 Licq::TDaemon::TDaemon() 85 : PluginRepository(NULL), EventLoop(&EventQueue, this)95 : PluginRepository(NULL), EventLoop(&EventQueue, &EventDispatcher) 86 96 { 87 97 // Setup event handlers 88 EventHandlers["plugin:create"] = &TDaemon::onPluginCreate; 98 EventDispatcher.setDefaultCallback(&TDaemon::onEvent, this); 99 EventDispatcher.setCallback("plugin:create", &TDaemon::onPluginCreate, this); 100 EventDispatcher.setCallback("log:event", &aEventHandler); 89 101 } 90 102 -
branches/erijo-dev/licq/src/daemon.h
r4883 r4884 22 22 23 23 #include "licq/interface/daemon.h" 24 #include "licq/eventdispatcher.h" 24 25 #include "licq/eventloop.h" 25 26 … … 33 34 34 35 class TDaemon : public IDaemon, 35 public IEventHandler,36 36 public ITimeoutHandler, 37 37 public IFileDescriptorHandler … … 43 43 TEventQueue EventQueue; 44 44 TEventLoop EventLoop; 45 TEventDispatcher EventDispatcher; 45 46 TPipe Pipe; 46 47 47 typedef void (TDaemon::*FnEventHandler)(const IEventPtr& event); 48 typedef std::map<std::string, FnEventHandler> TEventHandlers; 49 TEventHandlers EventHandlers; 50 51 // From IEventHandler 48 // Event handlers 52 49 void onEvent(const IEventPtr& event); 53 54 // Event handlers55 50 void onPluginCreate(const IEventPtr& event); 56 51 -
branches/erijo-dev/licq/src/event/CMakeLists.txt
r4883 r4884 1 1 set(event_SRCS 2 2 event.cpp 3 eventdispatcher.cpp 3 4 eventloop.cpp 4 5 eventqueue.cpp
