NAME

ACE_Service_Config - Provide the base class that supplies common server daemon operations.

SYNOPSIS


#include <ace/Service_Config.h>


class ACE_Service_Config : public ACE_Event_Handler
{
  public:
    enum {MAX_SERVICES = ACE_DEFAULT_REACTOR_SIZE};
    ACE_Service_Config (
        int ignore_defaults = 0,
        size_t size = ACE_Service_Config::MAX_SERVICES,
        int signum = SIGHUP
        );
    ACE_Service_Config (const char program_name[]);
    static int open (const char program_name[]);
    static int open (int argc, char *argv[]);
    virtual ~ACE_Service_Config (void);
    static int close (void);
    static int close_svcs (void);
    static int close_singletons (void);
    static int run_reactor_event_loop (void);
    static int run_reactor_event_loop (ACE_Time_Value &tv);
    static int end_reactor_event_loop (void);
    static sig_atomic_t reactor_event_loop_done (void);
    static int run_proactor_event_loop (void);
    static int run_proactor_event_loop (ACE_Time_Value &tv);
    static int end_proactor_event_loop (void);
    static sig_atomic_t proactor_event_loop_done (void);
    static int run_reactorEx_event_loop (void);
    static int run_reactorEx_event_loop (ACE_Time_Value &tv);
    static int end_reactorEx_event_loop (void);
    static sig_atomic_t reactorEx_event_loop_done (void);
    static sig_atomic_t reconfig_occurred (void);
    static void reconfig_occurred (sig_atomic_t);
    static ACE_STATIC_SVCS *static_svcs (void);
    static ACE_Reactor *reactor (void);
    static ACE_Reactor *reactor (ACE_Reactor *);
    static ACE_Proactor *proactor (size_t threads = 0);
    static ACE_Proactor *proactor (ACE_Proactor *);
    static ACE_ReactorEx *reactorEx (void);
    static ACE_ReactorEx *reactorEx (ACE_ReactorEx *);
    static ACE_Service_Repository *svc_rep (void);
    static ACE_Service_Repository *svc_rep (ACE_Service_Repository *);
    static ACE_Thread_Manager *thr_mgr (void);
    static ACE_Thread_Manager *thr_mgr (ACE_Thread_Manager *);
    static ACE_Allocator *allocator (void);
    static ACE_Allocator *allocator (ACE_Allocator *);
    static int initialize (
        const ACE_Service_Record *,
        char parameters[]
        );
    static int initialize (const char svc_name[], char parameters[]);
    static int resume (const char svc_name[]);
    static int suspend (const char svc_name[]);
    static int remove (const char svc_name[]);
    void dump (void) const;
    ACE_ALLOC_HOOK_DECLARE;
  protected:
    static int process_directives (void);
    static void parse_args (int, char *[]);
    static void reconfigure (void);
    static int start_daemon (void);
    static int load_defaults (void);
    virtual int handle_signal (
        int signum,
        siginfo_t * = 0,
        ucontext_t * = 0
        );
  private:
    static ACE_Service_Repository *svc_rep_;
    static int delete_svc_rep_;
    static ACE_Thread_Manager *thr_mgr_;
    static int delete_thr_mgr_;
    static ACE_Allocator *allocator_;
    static int delete_allocator_;
    static ACE_Proactor *proactor_;
    static int delete_proactor_;
    static ACE_ReactorEx *reactorEx_;
    static int delete_reactorEx_;
    static ACE_Reactor *reactor_;
    static int delete_reactor_;
    static const char *service_config_file_;
    static const char *logger_key_;
    static sig_atomic_t end_reactor_event_loop_;
    static sig_atomic_t end_proactor_event_loop_;
    static sig_atomic_t end_reactorEx_event_loop_;
    static sig_atomic_t reconfig_occurred_;
    static char debug_;
    static char be_a_daemon_;
    static char no_defaults_;
    static int signum_;
};

DESCRIPTION

This class inherits from ACE_Event_Handler so that it can be used as a signal handler.

Initialization and termination methods.

ACE_Service_Config (
    int ignore_defaults = 0,
    size_t size = ACE_Service_Config::MAX_SERVICES,
    int signum = SIGHUP
    );
ACE_Service_Config (const char program_name[]);
static int open (const char program_name[]);
static int open (int argc, char *argv[]);
virtual ~ACE_Service_Config (void);
static int close (void);
static int close_svcs (void);
static int close_singletons (void);

Reactor event loop management methods.

static int run_reactor_event_loop (void);
static int run_reactor_event_loop (ACE_Time_Value &tv);
static int end_reactor_event_loop (void);
static sig_atomic_t reactor_event_loop_done (void);

Proactor event loop management methods.

static int run_proactor_event_loop (void);
static int run_proactor_event_loop (ACE_Time_Value &tv);
static int end_proactor_event_loop (void);
static sig_atomic_t proactor_event_loop_done (void);

ReactorEx event loop management methods.

static int run_reactorEx_event_loop (void);
static int run_reactorEx_event_loop (ACE_Time_Value &tv);
static int end_reactorEx_event_loop (void);
static sig_atomic_t reactorEx_event_loop_done (void);
static sig_atomic_t reconfig_occurred (void);
static void reconfig_occurred (sig_atomic_t);

The following methods are static in order to enforce Singleton

semantics for the Reactor, Service_Repository, Thread_Manager, Acceptor/Connector Strategy factory, Proactor, and ReactorEx. Other portions of the system may need to access them at some point or another...

Accessors and mutators for process-wide Singletons.

static ACE_STATIC_SVCS *static_svcs (void);
static ACE_Reactor *reactor (void);
static ACE_Reactor *reactor (ACE_Reactor *);
static ACE_Proactor *proactor (size_t threads = 0);
static ACE_Proactor *proactor (ACE_Proactor *);
static ACE_ReactorEx *reactorEx (void);
static ACE_ReactorEx *reactorEx (ACE_ReactorEx *);
static ACE_Service_Repository *svc_rep (void);
static ACE_Service_Repository *svc_rep (ACE_Service_Repository *);
static ACE_Thread_Manager *thr_mgr (void);
static ACE_Thread_Manager *thr_mgr (ACE_Thread_Manager *);
static ACE_Allocator *allocator (void);
static ACE_Allocator *allocator (ACE_Allocator *);

Member functions used by various other parts

of the Service Configurator class category.
static int initialize (const ACE_Service_Record *, char parameters[]);
static int initialize (const char svc_name[], char parameters[]);
static int resume (const char svc_name[]);
static int suspend (const char svc_name[]);
static int remove (const char svc_name[]);
void dump (void) const;
ACE_ALLOC_HOOK_DECLARE;

Set by command-line options.

static char debug_;
static char be_a_daemon_;
static char no_defaults_;
static int signum_;

AUTHOR

Doug Schmidt

Maintain a set of the statically linked service descriptor.

LIBRARY

ace