summaryrefslogtreecommitdiff
path: root/src/signaldispatcher.cpp
blob: 0c717a35e6f7d327bafef4b479427b015afa0662 (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 #include <cstdlib>
   14 using namespace std;
   15 
   16 #include "signaldispatcher.h"
   17 
   18 SignalDispatcher* SignalDispatcher::m_instance = 0;
   19 
   20 SignalDispatcher::SignalDispatcher()
   21 {
   22 
   23 }
   24 
   25 SignalDispatcher* SignalDispatcher::instance()
   26 {
   27     if ( m_instance == 0 ) {
   28         m_instance = new SignalDispatcher();
   29     }
   30 
   31     return m_instance;
   32 }
   33 
   34 void SignalDispatcher::dispatch( int signalNumber )
   35 {
   36     map<int, SignalHandler*>::iterator it = 
   37         SignalDispatcher::instance()->m_signalHandlers.find( signalNumber );
   38     if ( it !=  SignalDispatcher::instance()->m_signalHandlers.end() ) {
   39         it->second->handleSignal( signalNumber );
   40     } else {
   41         cerr << "prt-get: caught signal " << signalNumber << endl;
   42     }
   43     exit( signalNumber );
   44 }
   45 
   46 void SignalDispatcher::registerHandler( SignalHandler* handler,
   47                                         int signalNumber )
   48 {
   49     m_signalHandlers[signalNumber] = handler;
   50 }
   51 
   52 void SignalDispatcher::unregisterHandler( int signalNumber )
   53 {
   54     m_signalHandlers.erase( signalNumber );
   55 }

Generated by cgit