#include <Sig_Adapter.h>
Inheritance diagram for ACE_Sig_Adapter:
Public Member Functions | |
ACE_Sig_Adapter (ACE_Sig_Action &, int sigkey) | |
ACE_Sig_Adapter (ACE_Event_Handler *, int sigkey) | |
ACE_Sig_Adapter (ACE_Sig_Handler_Ex, int sigkey=0) | |
~ACE_Sig_Adapter (void) | |
int | sigkey (void) |
virtual int | handle_signal (int, siginfo_t *, ucontext_t *) |
Called by the to dispatch the signal handler. | |
Private Types | |
enum | { ACE_HANDLER, SIG_ACTION, C_FUNCTION } |
Is this an external handler or an ACE handler? More... | |
Private Attributes | |
int | sigkey_ |
Key for this signal handler (used to remove it). | |
enum ACE_Sig_Adapter:: { ... } | type_ |
Is this an external handler or an ACE handler? | |
ACE_Sig_Action | sa_ |
This is an external handler (ugh). | |
ACE_Event_Handler * | eh_ |
This is an ACE hander. | |
ACE_Sig_Handler_Ex | sig_func_ |
This is a normal C function. |
Definition at line 35 of file Sig_Adapter.h.
|
Is this an external handler or an ACE handler?
Definition at line 55 of file Sig_Adapter.h.
00056 { 00057 /// We're just wrapping an ACE_Event_Handler. 00058 ACE_HANDLER, 00059 /// An ACE_Sig_Action. 00060 SIG_ACTION, 00061 /// A normal C function. 00062 C_FUNCTION 00063 } type_; |
|
Definition at line 8 of file Sig_Adapter.cpp.
|
|
Definition at line 16 of file Sig_Adapter.cpp.
|
|
Definition at line 25 of file Sig_Adapter.cpp. References ACE_Sig_Handler_Ex.
|
|
Definition at line 34 of file Sig_Adapter.cpp.
00035 { 00036 } |
|
Called by the to dispatch the signal handler.
Reimplemented from ACE_Event_Handler. Definition at line 46 of file Sig_Adapter.cpp. References ACE_HANDLER, ACE_Sig_Handler_Ex, ACE_TRACE, C_FUNCTION, ACE_Event_Handler::handle_signal(), ACE_Sig_Action::register_action(), SIG_ACTION, sig_func_, and ucontext_t.
00049 { 00050 ACE_TRACE ("ACE_Sig_Adapter::handle_signal"); 00051 00052 switch (this->type_) 00053 { 00054 case SIG_ACTION: 00055 { 00056 // We have to dispatch a handler that was registered by a 00057 // third-party library. 00058 00059 ACE_Sig_Action old_disp; 00060 00061 // Make sure this handler executes in the context it was 00062 // expecting... 00063 this->sa_.register_action (signum, &old_disp); 00064 00065 ACE_Sig_Handler_Ex sig_func = ACE_Sig_Handler_Ex (this->sa_.handler ()); 00066 00067 (*sig_func) (signum, siginfo, ucontext); 00068 // Restore the original disposition. 00069 old_disp.register_action (signum); 00070 break; 00071 } 00072 case ACE_HANDLER: 00073 this->eh_->handle_signal (signum, siginfo, ucontext); 00074 break; 00075 case C_FUNCTION: 00076 (*this->sig_func_) (signum, siginfo, ucontext); 00077 break; 00078 } 00079 return 0; 00080 } |
|
Returns this signal key that's used to remove this from the ACE_Reactor's internal table. Definition at line 39 of file Sig_Adapter.cpp. References ACE_TRACE, and sigkey_. Referenced by ACE_Sig_Handlers::register_handler(), and ACE_Sig_Handlers::remove_handler().
|
|
This is an ACE hander.
Definition at line 71 of file Sig_Adapter.h. |
|
This is an external handler (ugh).
Definition at line 68 of file Sig_Adapter.h. |
|
This is a normal C function.
Definition at line 74 of file Sig_Adapter.h. Referenced by handle_signal(). |
|
Key for this signal handler (used to remove it).
Definition at line 52 of file Sig_Adapter.h. Referenced by sigkey(). |
|
Is this an external handler or an ACE handler?
|