1 #include "ace/Sig_Adapter.h"
3 ACE_Sig_Adapter::ACE_Sig_Adapter (ACE_Sig_Action
&sa
, int sigkey
)
10 // ACE_TRACE ("ACE_Sig_Adapter::ACE_Sig_Adapter");
13 ACE_Sig_Adapter::ACE_Sig_Adapter (ACE_Event_Handler
*eh
,
20 // ACE_TRACE ("ACE_Sig_Adapter::ACE_Sig_Adapter");
23 ACE_Sig_Adapter::ACE_Sig_Adapter (ACE_Sig_Handler_Ex sig_func
,
30 // ACE_TRACE ("ACE_Sig_Adapter::ACE_Sig_Adapter");
33 ACE_Sig_Adapter::~ACE_Sig_Adapter ()
37 ACE_ALLOC_HOOK_DEFINE(ACE_Sig_Adapter
)
40 ACE_Sig_Adapter::sigkey (void)
42 ACE_TRACE ("ACE_Sig_Adapter::sigkey");
47 ACE_Sig_Adapter::handle_signal (int signum
,
51 ACE_TRACE ("ACE_Sig_Adapter::handle_signal");
57 // We have to dispatch a handler that was registered by a
58 // third-party library.
60 ACE_Sig_Action old_disp
;
62 // Make sure this handler executes in the context it was
64 this->sa_
.register_action (signum
, &old_disp
);
66 ACE_Sig_Handler_Ex sig_func
= ACE_Sig_Handler_Ex (this->sa_
.handler ());
68 (*sig_func
) (signum
, siginfo
, ucontext
);
69 // Restore the original disposition.
70 old_disp
.register_action (signum
);
74 this->eh_
->handle_signal (signum
, siginfo
, ucontext
);
77 (*this->sig_func_
) (signum
, siginfo
, ucontext
);