#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?
|
1.3.6