Changeset 6026 for branches/newapi
- Timestamp:
- 01/11/08 07:58:30 (11 months ago)
- Location:
- branches/newapi/licq/src
- Files:
-
- 2 modified
-
daemon.cpp (modified) (3 diffs)
-
daemon.h (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/newapi/licq/src/daemon.cpp
r6018 r6026 19 19 20 20 #include "daemon.h" 21 #include "event/eventqueue.h" 21 22 #include "event/eventmanager.h" 22 23 #include "event/eventqueuename.h" 23 24 #include "globals.h" 25 #include "licq/event/eventdispatcher.h" 26 #include "licq/event/eventloop.h" 24 27 #include "licq/exception/invalidargumentexception.h" 25 28 #include "licq/exception/runtimeexception.h" … … 92 95 myEventManager(eventManager) 93 96 { 94 // Empty 97 myEventLoop = new Licq::EventLoop(); 98 myEventQueue = new EventQueue("daemon"); 99 myEventDispatcher = new Licq::EventDispatcher(*myEventLoop, *myEventQueue, this); 100 101 myEventManager->registerQueue(EventQueueName::daemon, myEventQueue, 0); 95 102 } 96 103 97 104 LicqDaemon::Daemon::~Daemon() 98 105 { 99 // Empty 106 myEventManager->unregisterQueue(EventQueueName::daemon, myEventQueue); 107 108 delete myEventDispatcher; 109 delete static_cast<EventQueue*>(myEventQueue); 110 delete myEventLoop; 100 111 } 101 112 … … 188 199 int LicqDaemon::Daemon::main() 189 200 { 190 sleep(2); 191 return 1; 201 if (myPluginManager->pluginsRunning() == 0) 202 { 203 myLog.warning("No plugins running; exiting"); 204 return 1; 205 } 206 207 myEventDispatcher->setDefaultCallback(&Daemon::onEvent, this); 208 myEventDispatcher->setCallback("daemon.exit", &Daemon::onExitEvent, this); 209 myEventDispatcher->setCallback("plugin.stopped", &Daemon::onPluginStopped, this); 210 211 return myEventLoop->run(); 212 } 213 214 bool LicqDaemon::Daemon::onEvent(Licq::Event::Ptr event) 215 { 216 myLog.debug() << "Received event " << event->getName(); 217 return true; 218 } 219 220 bool LicqDaemon::Daemon::onExitEvent(Licq::Event::Ptr) 221 { 222 myLog.debug() << "Stopping all plugins"; 223 myPluginManager->stopAllPlugins(); 224 return true; 225 } 226 227 bool LicqDaemon::Daemon::onPluginStopped(Licq::Event::Ptr event) 228 { 229 assert(event->hasProperty("id")); 230 myLog.debug() << "Plugin stopped; id = " << 231 event->getProperty<Licq::Plugin::Id>("id"); 232 myPluginManager->cleanupPlugin(event->getProperty<Licq::Plugin::Id>("id")); 233 234 if (myPluginManager->pluginsRunning() == 0) 235 { 236 myLog.debug() << "All plugins are stopped; exiting"; 237 myEventLoop->exit(0); 238 } 239 240 return true; 192 241 } 193 242 -
branches/newapi/licq/src/daemon.h
r6018 r6026 29 29 namespace Licq 30 30 { 31 class EventDispatcher; 32 class EventLoop; 33 class EventQueue; 31 34 class Log; 32 35 } … … 52 55 const std::string& getBaseDir() const; 53 56 57 bool onEvent(Licq::Event::Ptr event); 58 bool onExitEvent(Licq::Event::Ptr event); 59 bool onPluginStopped(Licq::Event::Ptr event); 60 54 61 // From Licq::Daemon 55 62 void sendEvent(Licq::Event::Ptr event); 56 63 void sendEventToDaemon(Licq::Event::Ptr event); 57 64 void sendEventToPlugin(Licq::Event::Ptr event, Licq::Plugin::Id id); 58 59 65 void getPluginInformation(Licq::Plugin::InformationVector* info); 60 66 … … 63 69 PluginManager* myPluginManager; 64 70 EventManager* myEventManager; 71 72 Licq::EventLoop* myEventLoop; 73 Licq::EventQueue* myEventQueue; 74 Licq::EventDispatcher* myEventDispatcher; 65 75 66 76 std::string myBaseDir;
