Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

ACE_Service_Config Class Reference

Supplies common server operations for dynamic and static configuration of services. More...

#include <Service_Config.h>

Collaboration diagram for ACE_Service_Config:

Collaboration graph
[legend]
List of all members.

Public Types

enum  { MAX_SERVICES = ACE_DEFAULT_SERVICE_REPOSITORY_SIZE }

Public Methods

 ACE_Service_Config (int ignore_static_svcs=1, size_t size=ACE_Service_Config::MAX_SERVICES, int signum=SIGHUP)
 Initialize the Service Repository. More...

 ACE_Service_Config (const ACE_TCHAR program_name[], const ACE_TCHAR *logger_key=ACE_DEFAULT_LOGGER_KEY)
virtual ~ACE_Service_Config (void)
 Perform user-specified close activities and remove dynamic memory. More...

void dump (void) const
 Dump the state of an object. More...


Static Public Methods

int open_i (const ACE_TCHAR program_name[], const ACE_TCHAR *logger_key=ACE_DEFAULT_LOGGER_KEY, int ignore_default_svc_conf_file=0, int ignore_debug_flag=0)
int open (const ACE_TCHAR program_name[], const ACE_TCHAR *logger_key=ACE_DEFAULT_LOGGER_KEY, int ignore_static_svcs=1, int ignore_default_svc_conf_file=0, int ignore_debug_flag=0)
int open (int argc, ACE_TCHAR *argv[], const ACE_TCHAR *logger_key=ACE_DEFAULT_LOGGER_KEY, int ignore_static_svcs=1, int ignore_default_svc_conf=0, int ignore_debug_flag=0)
int close (void)
 Tidy up and perform last rites when ACE_Service_Config is shut down. This method calls <close_svcs>. Returns 0. More...

int fini_svcs (void)
 Perform user-specified close hooks and possibly delete all of the configured services in the <Service_Repository>. More...

int close_svcs (void)
int close_singletons (void)
int reconfig_occurred (void)
 True if reconfiguration occurred. More...

void reconfig_occurred (int)
 Indicate that reconfiguration occurred. More...

void reconfigure (void)
 Perform the reconfiguration process. More...

ACE_STATIC_SVCSstatic_svcs (void)
 Returns a pointer to the list of statically linked services. More...

int initialize (const ACE_Service_Type *, ACE_TCHAR parameters[])
 Dynamically link the shared object file and retrieve a pointer to the designated shared object in this file. More...

int initialize (const ACE_TCHAR svc_name[], ACE_TCHAR parameters[])
 Initialize and activate a statically <svc_name> service. More...

int resume (const ACE_TCHAR svc_name[])
 Resume a <svc_name> that was previously suspended or has not yet been resumed (e.g., a static service). More...

int suspend (const ACE_TCHAR svc_name[])
int remove (const ACE_TCHAR svc_name[])
 Totally remove <svc_name> from the daemon by removing it from the ACE_Reactor, and unlinking it if necessary. More...

ACE_INLINE void signal_handler (ACE_Sig_Adapter *)
 Set the signal_handler;for internal use by ACE_Object_Manager only. More...

int process_file (const ACE_TCHAR file[])
 Process a file containing a list of service configuration directives. More...

int process_directive (const ACE_TCHAR directive[])
 Process one service configuration <directive>, which is passed as a string. Returns the number of errors that occurred. More...

int process_directive (const ACE_Static_Svc_Descriptor &ssd, int force_replace=0)
 Process one static service definition. More...

int process_directives (void)
void handle_signal (int sig, siginfo_t *, ucontext_t *)
 Handles signals to trigger reconfigurations. More...

int parse_args (int, ACE_TCHAR *argv[])

Public Attributes

 ACE_ALLOC_HOOK_DECLARE
 Declare the dynamic allocation hooks. More...


Static Protected Methods

int process_commandline_directives (void)
 Process service configuration requests that were provided on the command-line. Returns the number of errors that occurred. More...

int process_directives_i (ACE_Svc_Conf_Param *param)
 This is the implementation function that process_directives() and process_directive() both call. Returns the number of errors that occurred. More...

int start_daemon (void)
 Become a daemon. More...

int load_static_svcs (void)
 Add the default statically-linked services to the <ACE_Service_Repository>. More...


Static Private Methods

int init_svc_conf_file_queue (void)
 Initialize the <svc_conf_file_queue_> if necessary. More...


Static Private Attributes

const ACE_TCHARlogger_key_
 Indicates where to write the logging output. This is typically either a STREAM pipe or a socket address. More...

ACE_STATIC_SVCSstatic_svcs_
 Singleton repository of statically linked services. More...

ACE_SVC_QUEUEsvc_queue_
 Queue of services specified on the command-line. More...

ACE_SVC_QUEUEsvc_conf_file_queue_
 Queue of svc.conf files specified on the command-line. This should probably be made to handle unicode filenames... More...

sig_atomic_t reconfig_occurred_
 True if reconfiguration occurred. More...

int be_a_daemon_
 Shall we become a daemon process? More...

int no_static_svcs_
 Should we avoid loading the static services? More...

int signum_
 Number of the signal used to trigger reconfiguration. More...

ACE_Sig_Adaptersignal_handler_
 Handles the reconfiguration signals. More...

int is_initialized_

Detailed Description

Supplies common server operations for dynamic and static configuration of services.

The <ACE_Service_Config> uses the Monostate pattern. Therefore, you can only have one of these instantiated per-process. NOTE: the signal_handler_ static member is allocated by the <ACE_Object_Manager>. The <ACE_Service_Config> constructor uses signal_handler_. Therefore, if the program has any static <ACE_Service_Config> objects, there might be initialization order problems. They can be minimized, but not eliminated, by _not_ defining <ACE_HAS_NONSTATIC_OBJECT_MANAGER>.


Member Enumeration Documentation

anonymous enum
 

Enumeration values:
MAX_SERVICES 


Constructor & Destructor Documentation

ACE_Service_Config::ACE_Service_Config int    ignore_static_svcs = 1,
size_t    size = ACE_Service_Config::MAX_SERVICES,
int    signum = SIGHUP
 

Initialize the Service Repository.

ACE_Service_Config::ACE_Service_Config const ACE_TCHAR    program_name[],
const ACE_TCHAR   logger_key = ACE_DEFAULT_LOGGER_KEY
 

Performs an open without parsing command-line arguments. The <logger_key> indicates where to write the logging output, which is typically either a STREAM pipe or a socket address.

ACE_Service_Config::~ACE_Service_Config void    [virtual]
 

Perform user-specified close activities and remove dynamic memory.


Member Function Documentation

int ACE_Service_Config::close void    [static]
 

Tidy up and perform last rites when ACE_Service_Config is shut down. This method calls <close_svcs>. Returns 0.

int ACE_Service_Config::close_singletons void    [static]
 

Delete the dynamically allocated Singletons (i.e., the <Reactor>, <Proactor>, <ReactorEx>, and <Thread_Manager>. Returns 0.

int ACE_Service_Config::close_svcs void    [static]
 

Perform user-specified close hooks on all of the configured services in the <Service_Repository>, then delete the <Service_Repository> itself. Returns 0.

void ACE_Service_Config::dump void    const
 

Dump the state of an object.

int ACE_Service_Config::fini_svcs void    [static]
 

Perform user-specified close hooks and possibly delete all of the configured services in the <Service_Repository>.

void ACE_Service_Config::handle_signal int    sig,
siginfo_t  ,
ucontext_t  
[static]
 

Handles signals to trigger reconfigurations.

int ACE_Service_Config::init_svc_conf_file_queue void    [static, private]
 

Initialize the <svc_conf_file_queue_> if necessary.

int ACE_Service_Config::initialize const ACE_TCHAR    svc_name[],
ACE_TCHAR    parameters[]
[static]
 

Initialize and activate a statically <svc_name> service.

int ACE_Service_Config::initialize const ACE_Service_Type   sr,
ACE_TCHAR    parameters[]
[static]
 

Dynamically link the shared object file and retrieve a pointer to the designated shared object in this file.

int ACE_Service_Config::load_static_svcs void    [static, protected]
 

Add the default statically-linked services to the <ACE_Service_Repository>.

ACE_INLINE int ACE_Service_Config::open int    argc,
ACE_TCHAR   argv[],
const ACE_TCHAR   logger_key = ACE_DEFAULT_LOGGER_KEY,
int    ignore_static_svcs = 1,
int    ignore_default_svc_conf = 0,
int    ignore_debug_flag = 0
[static]
 

This is the primary entry point into the ACE_Service_Config (the constructor just handles simple initializations). It parses arguments passed in from <argc> and <argv> parameters. The arguments that are valid in a call to this method include:

  • '-b' Option to indicate that we should be a daemon
  • '-d' Turn on debugging mode
  • '-f' Option to read in the list of svc.conf file names
  • '-k' Option to read a wide string where in the logger output can be written
  • '-y' Option required to use statically linked services. A static service repostory will be constructed if the flag is used. Use this flag to override the default <ignore_static_svcs> flag at run-time.
  • '-n' Option to avoid using any statically linked services, which eliminates the need to construct the static service repository.
  • '-S' Option to read in the list of services on the command-line Please observe the difference between options '-f' that looks for a list of files and here a list of services.
Returns number of errors that occurred on failure and 0 otherwise.

The <logger_key> indicates where to write the logging output, which is typically either a STREAM pipe or a socket address. If <ignore_static_svcs> is 1 then static services are not loaded, otherwise, they are loaded. If <ignore_default_svc_conf_file> is non-0 then the <svc.conf> configuration file will be ignored. Returns zero upon success, -1 if the file is not found or cannot be opened (errno is set accordingly), otherwise returns the number of errors encountered loading the services in the specified svc.conf configuration file. If <ignore_debug_flag> is non-0 then the application is responsible for setting the <ACE_Log_Msg::priority_mask> appropriately.

ACE_INLINE int ACE_Service_Config::open const ACE_TCHAR    program_name[],
const ACE_TCHAR   logger_key = ACE_DEFAULT_LOGGER_KEY,
int    ignore_static_svcs = 1,
int    ignore_default_svc_conf = 0,
int    ignore_debug_flag = 0
[static]
 

Performs an open without parsing command-line arguments. The <logger_key> indicates where to write the logging output, which is typically either a STREAM pipe or a socket address. If <ignore_static_svcs> is 1 then static services are not loaded, otherwise, they are loaded. If <ignore_default_svc_conf_file> is non-0 then the <svc.conf> configuration file will be ignored. Returns zero upon success, -1 if the file is not found or cannot be opened (errno is set accordingly), otherwise returns the number of errors encountered loading the services in the specified svc.conf configuration file. If <ignore_debug_flag> is non-0 then the application is responsible for setting the <ACE_Log_Msg::priority_mask> appropriately.

int ACE_Service_Config::open_i const ACE_TCHAR    program_name[],
const ACE_TCHAR   logger_key = ACE_DEFAULT_LOGGER_KEY,
int    ignore_default_svc_conf_file = 0,
int    ignore_debug_flag = 0
[static]
 

Performs an open without parsing command-line arguments. The <logger_key> indicates where to write the logging output, which is typically either a STREAM pipe or a socket address. If <ignore_default_svc_conf_file> is non-0 then the "svc.conf" file will be ignored. If <ignore_debug_flag> is non-0 then the application is responsible for setting the <ACE_Log_Msg::priority_mask> appropriately. Returns number of errors that occurred on failure and 0 otherwise.

int ACE_Service_Config::parse_args int    argc,
ACE_TCHAR   argv[]
[static]
 

Handle the command-line options intended for the <ACE_Service_Config>. Note that <argv[0]> is assumed to be the program name. The arguments that are valid in a call to this method are

  • '-b' Option to indicate that we should be a daemon
  • '-d' Turn on debugging mode
  • '-f' Option to read in the list of svc.conf file names
  • '-k' Option to read a wide string where in the logger output can be written
  • '-y' Turn on the flag for a repository of statically linked services
  • '-n' Need not have a repository of statically linked services
  • '-S' Option to read in the list of services on the command-line Please observe the difference between options '-f' that looks for a list of files and here a list of services.

int ACE_Service_Config::process_commandline_directives void    [static, protected]
 

Process service configuration requests that were provided on the command-line. Returns the number of errors that occurred.

int ACE_Service_Config::process_directive const ACE_Static_Svc_Descriptor   ssd,
int    force_replace = 0
[static]
 

Process one static service definition.

Load a new static service into the ACE_Service_Repository.

Parameters:
ssd  Service descriptor, see the document of ACE_Static_Svc_Descriptor for more details.
force_replace  If set the new service descriptor replaces any previous instance in the ACE_Service_Repository.
Returns:
Returns -1 if the service cannot be 'loaded'.

int ACE_Service_Config::process_directive const ACE_TCHAR    directive[] [static]
 

Process one service configuration <directive>, which is passed as a string. Returns the number of errors that occurred.

int ACE_Service_Config::process_directives void    [static]
 

Process (or re-process) service configuration requests that are provided in the svc.conf file(s). Returns the number of errors that occurred.

int ACE_Service_Config::process_directives_i ACE_Svc_Conf_Param   param [static, protected]
 

This is the implementation function that process_directives() and process_directive() both call. Returns the number of errors that occurred.

int ACE_Service_Config::process_file const ACE_TCHAR    file[] [static]
 

Process a file containing a list of service configuration directives.

void ACE_Service_Config::reconfig_occurred int    config_occurred [static]
 

Indicate that reconfiguration occurred.

int ACE_Service_Config::reconfig_occurred void    [static]
 

True if reconfiguration occurred.

void ACE_Service_Config::reconfigure void    [static]
 

Perform the reconfiguration process.

int ACE_Service_Config::remove const ACE_TCHAR    svc_name[] [static]
 

Totally remove <svc_name> from the daemon by removing it from the ACE_Reactor, and unlinking it if necessary.

int ACE_Service_Config::resume const ACE_TCHAR    svc_name[] [static]
 

Resume a <svc_name> that was previously suspended or has not yet been resumed (e.g., a static service).

ACE_INLINE void ACE_Service_Config::signal_handler ACE_Sig_Adapter   signal_handler [static]
 

Set the signal_handler;for internal use by ACE_Object_Manager only.

int ACE_Service_Config::start_daemon void    [static, protected]
 

Become a daemon.

ACE_STATIC_SVCS* ACE_Service_Config::static_svcs void    [static]
 

Returns a pointer to the list of statically linked services.

int ACE_Service_Config::suspend const ACE_TCHAR    svc_name[] [static]
 

Suspend <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...


Member Data Documentation

ACE_Service_Config::ACE_ALLOC_HOOK_DECLARE
 

Declare the dynamic allocation hooks.

int ACE_Service_Config::be_a_daemon_ [static, private]
 

Shall we become a daemon process?

int ACE_Service_Config::is_initialized_ [static, private]
 

Keep track of whether the <ACE_Service_Config> is already initialized. If so, we can't allow <yyparse> to be called since it's not reentrant. This variable is incremented by the <ACE_Service_Config::open> method and decremented by the <ACE_Service_Config::close> method.

const ACE_TCHAR* ACE_Service_Config::logger_key_ [static, private]
 

Indicates where to write the logging output. This is typically either a STREAM pipe or a socket address.

int ACE_Service_Config::no_static_svcs_ [static, private]
 

Should we avoid loading the static services?

sig_atomic_t ACE_Service_Config::reconfig_occurred_ [static, private]
 

True if reconfiguration occurred.

ACE_Sig_Adapter* ACE_Service_Config::signal_handler_ [static, private]
 

Handles the reconfiguration signals.

int ACE_Service_Config::signum_ [static, private]
 

Number of the signal used to trigger reconfiguration.

ACE_STATIC_SVCS* ACE_Service_Config::static_svcs_ [static, private]
 

Singleton repository of statically linked services.

ACE_SVC_QUEUE* ACE_Service_Config::svc_conf_file_queue_ [static, private]
 

Queue of svc.conf files specified on the command-line. This should probably be made to handle unicode filenames...

@

ACE_SVC_QUEUE* ACE_Service_Config::svc_queue_ [static, private]
 

Queue of services specified on the command-line.


The documentation for this class was generated from the following files:
Generated on Sun Feb 17 17:42:55 2002 for ACE by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001