#include <ace/Service_Config.h>
class ACE_Service_Config {
public:
enum {MAX_SERVICES = ACE_DEFAULT_SELECT_REACTOR_SIZE};
ACE_Service_Config ( int ignore_static_svcs = 0, size_t size = ACE_Service_Config::MAX_SERVICES, int signum = SIGHUP );
ACE_Service_Config ( const ASYS_TCHAR program_name[], LPCTSTR logger_key = ACE_DEFAULT_LOGGER_KEY );
static int open ( const ASYS_TCHAR program_name[], LPCTSTR logger_key = ACE_DEFAULT_LOGGER_KEY );
static int open ( int argc, ASYS_TCHAR *argv[], LPCTSTR logger_key = ACE_DEFAULT_LOGGER_KEY );
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 int reactor_event_loop_done (void);
static int reconfig_occurred (void);
static void reconfig_occurred (int);
static void reconfigure (void);
static ACE_STATIC_SVCS *static_svcs (void);
static ACE_Reactor *reactor (void);
static ACE_Reactor *reactor (ACE_Reactor *);
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 *alloc (void);
static ACE_Allocator *alloc (ACE_Allocator *);
static int initialize ( const ACE_Service_Type *, ASYS_TCHAR parameters[] );
static int initialize ( const ASYS_TCHAR svc_name[], ASYS_TCHAR parameters[] );
static int resume (const ASYS_TCHAR svc_name[]);
static int suspend (const ASYS_TCHAR svc_name[]);
static int remove (const ASYS_TCHAR svc_name[]);
static int initialize ( const ACE_Service_Type *, 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;
static ACE_INLINE void signal_handler (ACE_Sig_Adapter *);
ACE_ALLOC_HOOK_DECLARE;
static void handle_signal (int sig, siginfo_t *, ucontext_t *);
protected:
static int process_directives (void);
static void parse_args (int, ASYS_TCHAR *argv[]);
static int start_daemon (void);
static int load_static_svcs (void);
private:
static const ASYS_TCHAR *service_config_file_;
static LPCTSTR logger_key_;
static ACE_STATIC_SVCS *static_svcs_;
static sig_atomic_t reconfig_occurred_;
static char debug_;
static char be_a_daemon_;
static char no_static_svcs_;
static int signum_;
static ACE_Sig_Adapter *signal_handler_;
};
ACE_Service_Config (
int ignore_static_svcs = 0,
size_t size = ACE_Service_Config::MAX_SERVICES,
int signum = SIGHUP
);
ACE_Service_Config (
const ASYS_TCHAR program_name[],
LPCTSTR logger_key = ACE_DEFAULT_LOGGER_KEY
);
static int open (
const ASYS_TCHAR program_name[],
LPCTSTR logger_key = ACE_DEFAULT_LOGGER_KEY
);
static int open (
int argc,
ASYS_TCHAR *argv[],
LPCTSTR logger_key = ACE_DEFAULT_LOGGER_KEY
);
virtual ~ACE_Service_Config (void);
static int close (void);
close_svcs
and close_singletons
.
Returns 0.
static int close_svcs (void);
Service_Repository
, then delete the
Service_Repository
itself. Returns 0.
static int close_singletons (void);
Reactor
,
Proactor
, ReactorEx
, Thread_Manager
, and Allocator
).
Returns 0.
static int run_reactor_event_loop (void);
ACE_Reactor::handle_events
method
returns -1 or the end_reactor_event_loop
method is invoked.
DO NOT USE THIS METHOD. It may be unsupported in future releases.
Use ACE_Reactor::run_event_loop() instead.
static int run_reactor_event_loop (ACE_Time_Value &tv);
ACE_Reactor::handle_events
method
returns -1, the end_reactor_event_loop
method is invoked, or the
ACE_Time_Value
expires.
DO NOT USE THIS METHOD. It may be unsupported in future releases.
Use ACE_Reactor::run_event_loop() instead.
static int end_reactor_event_loop (void);
ACE_Service_Config
to terminate its event loop and
notifies the ACE_Reactor::instance
so that it can wake up
and close down gracefully.
DO NOT USE THIS METHOD. It may be unsupported in future releases.
Use ACE_Reactor::end_event_loop() instead.
static int reactor_event_loop_done (void);
static int reconfig_occurred (void);
static void reconfig_occurred (int);
static void reconfigure (void);
static ACE_STATIC_SVCS *static_svcs (void);
static ACE_Reactor *reactor (void);
ACE_Reactor
.
DO NOT USE THIS METHOD. It may be unsupported in future releases.
Use ACE_Reactor::instance() instead.
static ACE_Reactor *reactor (ACE_Reactor *);
ACE_Reactor
and return existing
pointer.
DO NOT USE THIS METHOD. It may be unsupported in future releases.
Use ACE_Reactor::instance() instead.
static ACE_Service_Repository *svc_rep (void);
ACE_Service_Repository
.
DO NOT USE THIS METHOD. It may be unsupported in future releases.
Use ACE_Service_Repository::instance() instead.
static ACE_Service_Repository *svc_rep (ACE_Service_Repository *);
ACE_Service_Repository
and return
existing pointer.
DO NOT USE THIS METHOD. It may be unsupported in future releases.
Use ACE_Service_Repository::instance() instead.
static ACE_Thread_Manager *thr_mgr (void);
ACE_Thread_Manager
.
DO NOT USE THIS METHOD. It may be unsupported in future releases.
Use ACE_Thread_Manager::instance() instead.
static ACE_Thread_Manager *thr_mgr (ACE_Thread_Manager *);
ACE_Thread_Manager
and return
existing pointer.
DO NOT USE THIS METHOD. It may be unsupported in future releases.
Use ACE_Thread_Manager::instance() instead.
static ACE_Allocator *alloc (void);
ACE_Allocator
.
DO NOT USE THIS METHOD. It may be unsupported in future releases.
Use ACE_Allocator::instance() instead.
static ACE_Allocator *alloc (ACE_Allocator *);
ACE_Allocator
and return existing
pointer.
DO NOT USE THIS METHOD. It may be unsupported in future releases.
Use ACE_Allocator::instance() instead.
static int initialize (
const ACE_Service_Type *,
ASYS_TCHAR parameters[]
);
static int initialize (
const ASYS_TCHAR svc_name[],
ASYS_TCHAR parameters[]
);
svc_name
service.
static int resume (const ASYS_TCHAR svc_name[]);
svc_name
that was previously suspended or has not yet
been resumed (e.g., a static service).
static int suspend (const ASYS_TCHAR svc_name[]);
svc_name
. Note that this will not unlink the service
from the daemon if it was dynamically linked, it will mark it
as being suspended in the Service Repository and call the
suspend() member function on the appropriate ACE_Service_Object.
A service can be resumed later on by calling the RESUME()
member function...
static int remove (const ASYS_TCHAR svc_name[]);
svc_name
from the daemon by removing it
from the ACE_Reactor, and unlinking it if necessary.
We must provide these function to bridge Svc_Conf parser with ACE.
static int initialize (const ACE_Service_Type *, 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;
static ACE_INLINE void signal_handler (ACE_Sig_Adapter *);
ACE_ALLOC_HOOK_DECLARE;
static char debug_;
static char be_a_daemon_;
static char no_static_svcs_;
static int signum_;
static ACE_Sig_Adapter *signal_handler_;