Changeset 5926 for branches/newapi

Show
Ignore:
Timestamp:
12/03/07 07:54:56 (12 months ago)
Author:
erijo
Message:

Setup signals handlers to exit the thread on SIGTERM. Use this to kill
plugins. Also start the plugin thread and let it run for 2 seconds.

Location:
branches/newapi/licq/src
Files:
2 added
7 modified

Legend:

Unmodified
Added
Removed
  • branches/newapi/licq/src/daemon.cpp

    r5924 r5926  
    9494} 
    9595 
    96 void LicqDaemon::Daemon::installSignalHandlers() 
    97 { 
    98 } 
    99  
    10096bool LicqDaemon::Daemon::init(int argc, char** argv, StreamLogSink& streamLogSink) 
    10197{ 
     
    188184int LicqDaemon::Daemon::main() 
    189185{ 
     186  sleep(2); 
    190187  return 1; 
    191188} 
  • branches/newapi/licq/src/daemon.h

    r5910 r5926  
    4040  ~Daemon(); 
    4141 
    42   void installSignalHandlers(); 
    43  
    4442  bool init(int argc, char** argv, StreamLogSink& streamLogSink); 
    4543  int main(); 
  • branches/newapi/licq/src/main.cpp

    r5924 r5926  
    1515#include "plugin/pluginmanager.h" 
    1616#include "util/logdistributor.h" 
     17#include "util/signalhandler.h" 
     18#include "util/streamlogsink.h" 
    1719#include "util/tr.h" 
    18 #include "util/streamlogsink.h" 
    1920 
    2021#include <iostream> 
     
    5051  { 
    5152    LicqDaemon::setupLocalization(); 
     53    LicqDaemon::SignalHandler::setupDefault(); 
    5254 
    5355    if (argc < 1) 
     
    5557 
    5658    LicqDaemon::Daemon* daemon = globals.getDaemon(); 
    57     daemon->installSignalHandlers(); 
    58  
    5959    bool continueAfterInit = false; 
    6060    try 
  • branches/newapi/licq/src/plugin/plugininstance.h

    r5797 r5926  
    3838{ 
    3939public: 
    40   virtual ~PluginInstance() {} 
    41  
    4240  virtual Licq::Plugin::Id load(int argc, char** argv) = 0; 
    4341 
     
    4543  virtual Licq::Plugin* getPlugin() = 0; 
    4644  virtual Licq::Thread* getThread() = 0; 
     45 
     46protected: 
     47  virtual ~PluginInstance() { /* Empty */ } 
    4748}; 
    4849 
  • branches/newapi/licq/src/plugin/plugininstanceimpl.cpp

    r5924 r5926  
    2828#include <cassert> 
    2929#include <cstring> 
     30#include <signal.h> 
    3031 
    3132static Licq::Plugin::Id getNextPluginId() 
     
    5657LicqDaemon::PluginInstanceImpl::~PluginInstanceImpl() 
    5758{ 
     59  if (myThread->getState() == Licq::Thread::StateRunning) 
     60  { 
     61    myThread->kill(SIGTERM); 
     62    myThread->join(); 
     63  } 
     64 
    5865  delete myThread; 
    5966 
  • branches/newapi/licq/src/plugin/pluginmanagerimpl.cpp

    r5924 r5926  
    6262  myPlugins[id] = instance; 
    6363 
     64  // Start the plugin 
     65  instance->getThread()->start(); 
     66 
    6467  return id; 
    6568} 
  • branches/newapi/licq/src/util/CMakeLists.txt

    r5809 r5926  
    55  logsink.cpp 
    66  pipe.cpp 
     7  signalhandler.cpp 
    78  streamlogsink.cpp 
    89  tr.cpp