:DControllerBase :IOSignalQueue :SignalSet :IOSignal :IntervalTimer :TimerCallback :IOService :DProcessBase Details of configFromFile omitted for clarity Sometime after runProcess is called SIGHUP is sent launch() initSignalHandling() IOSignalQueue(io_service) setOnReceiptHandler(DControllerBase::osSignalHandler) SignalSet(SIGHUP,SIGINT,SIGTERM) internalHandler(SIGHUP) invokeOnReceiptHandler(SIGHUP) pushSignal(SIGHUP, DControllerBase::ioSignalHandler) IOSignal(io_service, SIGHUP, handler) IntervalTimer(io_service) setup(TimerCallBack(sequence_id, handler), 1, ONE_SHOT)) TimerCallback(sequence_id, handler) operator ()() run() runProcess() run() ioSignalHandler(sequence_id) popSignal() getSignum() processSignal(SIGHUP) configFromFile() configure()