1 // $Id: Sig_Adapter.cpp 80826 2008-03-04 14:51:23Z wotte $
3 #include "ace/Sig_Adapter.h"
5 ACE_RCSID(ace
, Sig_Adapter
, "$Id: Sig_Adapter.cpp 80826 2008-03-04 14:51:23Z wotte $")
8 ACE_Sig_Adapter::ACE_Sig_Adapter (ACE_Sig_Action
&sa
, int sigkey
)
13 // ACE_TRACE ("ACE_Sig_Adapter::ACE_Sig_Adapter");
16 ACE_Sig_Adapter::ACE_Sig_Adapter (ACE_Event_Handler
*eh
,
22 // ACE_TRACE ("ACE_Sig_Adapter::ACE_Sig_Adapter");
25 ACE_Sig_Adapter::ACE_Sig_Adapter (ACE_Sig_Handler_Ex sig_func
,
31 // ACE_TRACE ("ACE_Sig_Adapter::ACE_Sig_Adapter");
34 ACE_Sig_Adapter::~ACE_Sig_Adapter ()
39 ACE_Sig_Adapter::sigkey (void)
41 ACE_TRACE ("ACE_Sig_Adapter::sigkey");
46 ACE_Sig_Adapter::handle_signal (int signum
,
50 ACE_TRACE ("ACE_Sig_Adapter::handle_signal");
56 // We have to dispatch a handler that was registered by a
57 // third-party library.
59 ACE_Sig_Action old_disp
;
61 // Make sure this handler executes in the context it was
63 this->sa_
.register_action (signum
, &old_disp
);
65 ACE_Sig_Handler_Ex sig_func
= ACE_Sig_Handler_Ex (this->sa_
.handler ());
67 (*sig_func
) (signum
, siginfo
, ucontext
);
68 // Restore the original disposition.
69 old_disp
.register_action (signum
);
73 this->eh_
->handle_signal (signum
, siginfo
, ucontext
);
76 (*this->sig_func_
) (signum
, siginfo
, ucontext
);