#include <ace/Signal.h>
class ACE_Sig_Handler {
public:
virtual int register_handler ( int signum, ACE_Event_Handler *new_sh, ACE_Sig_Action *new_disp = 0, ACE_Event_Handler **old_sh = 0, ACE_Sig_Action *old_disp = 0 );
virtual int remove_handler ( int signum, ACE_Sig_Action *new_disp = 0, ACE_Sig_Action *old_disp = 0, int sigkey = -1 );
static int sig_pending (void);
static void sig_pending (int);
virtual ACE_Event_Handler *handler (int signum);
virtual ACE_Event_Handler *handler ( int signum, ACE_Event_Handler * );
static void dispatch (int, siginfo_t *, ucontext_t *);
void dump (void) const;
ACE_ALLOC_HOOK_DECLARE;
protected:
static int in_range (int signum);
static sig_atomic_t sig_pending_;
private:
static ACE_Event_Handler *signal_handlers_[ACE_NSIG];
};
ACE_Event_Handler
with the ACE_Sig_Handler
in order to handle a designated
signum
. When a signal occurs that corresponds to this
signum
, the handle_signal
method of the registered
ACE_Event_Handler
is invoked automatically.
virtual int register_handler (
int signum,
ACE_Event_Handler *new_sh,
ACE_Sig_Action *new_disp = 0,
ACE_Event_Handler **old_sh = 0,
ACE_Sig_Action *old_disp = 0
);
ACE_Event_Handler
and a new sigaction associated with
signum
. Passes back the existing ACE_Event_Handler
and its
sigaction if pointers are non-zero. Returns -1 on failure and =
0 on success.
virtual int remove_handler (
int signum,
ACE_Sig_Action *new_disp = 0,
ACE_Sig_Action *old_disp = 0,
int sigkey = -1
);
ACE_Event_Handler
currently associated with
signum
. sigkey
is ignored in this implementation since there
is only one instance of a signal handler. Install the new
disposition (if given) and return the previous disposition (if
desired by the caller). Returns 0 on success and -1 if signum
is invalid.
Set/get signal status.
static int sig_pending (void);
static void sig_pending (int);
sig_pending_
so that no signal is pending.
virtual ACE_Event_Handler *handler (int signum);
ACE_Sig_Handlers
associated with signum
.
virtual ACE_Event_Handler *handler (int signum, ACE_Event_Handler *);
ACE_Event_Handler
that is associated with signum
.
Return the existing handler.
static void dispatch (int, siginfo_t *, ucontext_t *);
void dump (void) const;
ACE_ALLOC_HOOK_DECLARE;
static int in_range (int signum);
static sig_atomic_t sig_pending_;