SVC_HANDLER
based on multiprocessing.
More...
#include <Strategies_T.h>
Public Types | |
typedef ACE_Concurrency_Strategy < SVC_HANDLER > | base_type |
Public Member Functions | |
ACE_Process_Strategy (size_t n_processes=1, ACE_Event_Handler *acceptor=0, ACE_Reactor *=0, int avoid_zombies=0) | |
virtual int | open (size_t n_processes=1, ACE_Event_Handler *acceptor=0, ACE_Reactor *=0, int avoid_zombies=0) |
virtual | ~ACE_Process_Strategy (void) |
virtual int | activate_svc_handler (SVC_HANDLER *svc_handler, void *arg=0) |
void | dump (void) const |
Dump the state of an object. | |
Public Attributes | |
ACE_ALLOC_HOOK_DECLARE | |
Declare the dynamic allocation hooks. | |
Protected Types | |
typedef ACE_Concurrency_Strategy < SVC_HANDLER > | inherited |
Protected Attributes | |
size_t | n_processes_ |
Number of processes to spawn. | |
ACE_Event_Handler * | acceptor_ |
ACE_Reactor * | reactor_ |
SVC_HANDLER
based on multiprocessing.
This class provides a strategy that manages the creation of processes to handle requests from clients concurrently using a process-per-connection model. It behaves as a "process factory", using ACE::fork()
to fork threads "on-demand" to run the service specified by a user-supplied SVC_HANDLER
in a separate process.
typedef ACE_Concurrency_Strategy<SVC_HANDLER> ACE_Process_Strategy< SVC_HANDLER >::base_type |
typedef ACE_Concurrency_Strategy<SVC_HANDLER> ACE_Process_Strategy< SVC_HANDLER >::inherited [protected] |
ACE_Process_Strategy< SVC_HANDLER >::ACE_Process_Strategy | ( | size_t | n_processes = 1 , |
|
ACE_Event_Handler * | acceptor = 0 , |
|||
ACE_Reactor * | reactor = 0 , |
|||
int | avoid_zombies = 0 | |||
) | [inline] |
Initialize the strategy. If avoid_zombies is non-0 then set a flag to ACE::fork() to avoid zombies.
ACE_Process_Strategy< SVC_HANDLER >::~ACE_Process_Strategy | ( | void | ) | [inline, virtual] |
int ACE_Process_Strategy< SVC_HANDLER >::activate_svc_handler | ( | SVC_HANDLER * | svc_handler, | |
void * | arg = 0 | |||
) | [inline, virtual] |
Activate the svc_handler with an appropriate concurrency strategy. This method activates the SVC_HANDLER by first forking and then calling the open()
method of the SVC_HANDLER in the child.
Reimplemented from ACE_Concurrency_Strategy< SVC_HANDLER >.
void ACE_Process_Strategy< SVC_HANDLER >::dump | ( | void | ) | const [inline] |
int ACE_Process_Strategy< SVC_HANDLER >::open | ( | size_t | n_processes = 1 , |
|
ACE_Event_Handler * | acceptor = 0 , |
|||
ACE_Reactor * | reactor = 0 , |
|||
int | avoid_zombies = 0 | |||
) | [inline, virtual] |
Initialize the strategy. If avoid_zombies is non-0 then set a flag to ACE::fork() to avoid zombies.
ACE_Event_Handler* ACE_Process_Strategy< SVC_HANDLER >::acceptor_ [protected] |
This is the Acceptor
in the parent is listening on. We need to make sure that we remove it from the Reactor and close it down in the child.
ACE_Process_Strategy< SVC_HANDLER >::ACE_ALLOC_HOOK_DECLARE |
size_t ACE_Process_Strategy< SVC_HANDLER >::n_processes_ [protected] |
Number of processes to spawn.
ACE_Reactor* ACE_Process_Strategy< SVC_HANDLER >::reactor_ [protected] |
This is the reactor the child is using in conjunction with the acceptor. We need to remove the acceptor from this reactor in the child.