summaryrefslogtreecommitdiff
path: root/src/signaldispatcher.cpp
blob: e71793b0b43dd1af6f01cf68f0dbd69b30435453 (plain)
    1 ////////////////////////////////////////////////////////////////////////
    2 // FILE:        signaldispatcher.cpp
    3 // AUTHOR:      Johannes Winkelmann, jw@tks6.net
    4 // COPYRIGHT:   (c) 2002 by Johannes Winkelmann
    5 // ---------------------------------------------------------------------
    6 //  This program is free software; you can redistribute it and/or modify
    7 //  it under the terms of the GNU General Public License as published by
    8 //  the Free Software Foundation; either version 2 of the License, or
    9 //  (at your option) any later version.
   10 ////////////////////////////////////////////////////////////////////////
   11 
   12 #include <iostream>
   13 using namespace std;
   14 
   15 #include "signaldispatcher.h"
   16 
   17 SignalDispatcher* SignalDispatcher::m_instance = 0;
   18 
   19 SignalDispatcher::SignalDispatcher()
   20 {
   21 
   22 }
   23 
   24 SignalDispatcher* SignalDispatcher::instance()
   25 {
   26     if ( m_instance == 0 ) {
   27         m_instance = new SignalDispatcher();
   28     }
   29 
   30     return m_instance;
   31 }
   32 
   33 void SignalDispatcher::dispatch( int signalNumber )
   34 {
   35     map<int, SignalHandler*>::iterator it = 
   36         SignalDispatcher::instance()->m_signalHandlers.find( signalNumber );
   37     if ( it !=  SignalDispatcher::instance()->m_signalHandlers.end() ) {
   38         it->second->handleSignal( signalNumber );
   39     } else {
   40         cerr << "prt-get: caught signal " << signalNumber << endl;
   41     }
   42     exit( signalNumber );
   43 }
   44 
   45 void SignalDispatcher::registerHandler( SignalHandler* handler,
   46                                         int signalNumber )
   47 {
   48     m_signalHandlers[signalNumber] = handler;
   49 }
   50 
   51 void SignalDispatcher::unregisterHandler( int signalNumber )
   52 {
   53     m_signalHandlers.erase( signalNumber );
   54 }

Generated by cgit