---
name: "ACE_Service_Manager"
section: "3"
platform: "linux"
package: "libace-doc"
version: "5.0.7-4"
release: "Debian 2.2 (Potato)"
platforms: ["linux"]
url: "https://new.carta.tech/ACE_Service_Manager"
---

# ACE\_Service\_Manager(3)

Provide a standard ACE service for managing all the services configured in an ACE\_Service\_Repository.

## NAME

ACE\_Service\_Manager -  Provide a standard ACE service for managing all the services configured in an ACE\_Service\_Repository.

## SYNOPSIS

```
#include <ace/Service_Manager.h>
class ACE_Service_Manager : public ACE_Service_Object
{
  public:
    ACE_Service_Manager (void);
    ~ACE_Service_Manager (void);
  protected:
    virtual int reconfigure_services (void);
    virtual int list_services (void);
    virtual int init (int argc, ASYS_TCHAR *argv[]);
    virtual int info (ASYS_TCHAR **info_string, size_t length) const;
    virtual int fini (void);
    virtual int suspend (void);
    virtual int resume (void);
    void dump (void) const;
    ACE_ALLOC_HOOK_DECLARE;
  private:
    int open (const ACE_INET_Addr &sia);
    virtual ACE_HANDLE get_handle (void) const;
    virtual int handle_input (ACE_HANDLE fd);
    virtual int handle_close (ACE_HANDLE fd, ACE_Reactor_Mask);
    virtual int handle_signal (int signum, siginfo_t *, ucontext_t *);
    ACE_SOCK_Stream client_stream_;
    ACE_SOCK_Acceptor acceptor_;
    int debug_;
    int signum_;
    static u_short DEFAULT_PORT_;
};
```

## DESCRIPTION

This implementation is very simple.  It just handles each client request one at a time.  Each request is associated with a new connection, which is closed when the request is processed.  In addition, you must be using the singleton ACE\_Reactor::instance in order to trigger reconfigurations. This scheme can certainly be improved.

## Initialization and termination hooks.

```
ACE_Service_Manager (void);
```

Constructor.

```
~ACE_Service_Manager (void);
```

Destructor.

## Perform the various meta-services.

```
virtual int reconfigure_services (void);
```

Trigger a remote reconfiguration of the Service Configurator.

```
virtual int list_services (void);
```

Determine all the services offered by this daemon and return the information back to the client.

## Dynamic linking hooks.

```
virtual int init (int argc, ASYS_TCHAR *argv[]);
```

```
virtual int info (ASYS_TCHAR **info_string, size_t length) const;
```

```
virtual int fini (void);
```

## Scheduling hooks.

```
virtual int suspend (void);
```

```
virtual int resume (void);
```

```
void dump (void) const;
```

Dump the state of an object.

```
ACE_ALLOC_HOOK_DECLARE;
```

Declare the dynamic allocation hooks.

## Demultiplexing hooks.

```
virtual ACE_HANDLE get_handle (void) const;
```

```
virtual int handle_input (ACE_HANDLE fd);
```

```
virtual int handle_close (ACE_HANDLE fd, ACE_Reactor_Mask);
```

```
virtual int handle_signal (int signum, siginfo_t *, ucontext_t *);
```

```
ACE_SOCK_Stream client_stream_;
```

Connection to the client (we only support one client connection at a time).

```
ACE_SOCK_Acceptor acceptor_;
```

Acceptor instance.

```
int debug_;
```

Keep track of the debugging level.

```
int signum_;
```

The signal used to trigger reconfiguration.

```
static u_short DEFAULT_PORT_;
```

Default port for the Acceptor to listen on.

## AUTHOR

Doug Schmidt

## LIBRARY

ace
