## NAME

ACE_Service_Type_Impl - The abstract base class of the hierarchy that defines the contents of the `ACE_Service_Repository`. The subclasses of this class allow the configuration of `ACE_Service_Objects`, `ACE_Modules`, and `ACE_Streams`.

## SYNOPSIS

    #include <ace/Service_Types.h>

    class ACE_Service_Type_Impl
    {
      public:
        ACE_Service_Type_Impl (
            void *object,
            const ASYS_TCHAR *s_name,
            u_int flags = 0,
            ACE_Service_Object_Exterminator gobbler = 0
            );
        virtual ~ACE_Service_Type_Impl (void);
        virtual int suspend (void) const = 0;
        virtual int resume (void) const = 0;
        virtual int init (int argc, ASYS_TCHAR *argv[]) const = 0;
        virtual int fini (void) const;
        virtual int info (ASYS_TCHAR **str, size_t len) const = 0;
        void *object (void) const;
        const ASYS_TCHAR *name (void) const;
        void name (const ASYS_TCHAR *);
        void dump (void) const;
        ACE_ALLOC_HOOK_DECLARE;
      protected:
        const ASYS_TCHAR *name_;
        void *obj_;
        ACE_Service_Object_Exterminator gobbler_;
        u_int flags_;
    };

## DESCRIPTION

This class provides the root of the implementation hierarchy of the "Bridge" pattern. It maintains a pointer to the appropriate type of service implementation, i.e., `ACE_Service_Object`, `ACE_Module`, or `ACE_Stream`.

## Initialization and termination methods.

    ACE_Service_Type_Impl (
        void *object,
        const ASYS_TCHAR *s_name,
        u_int flags = 0,
        ACE_Service_Object_Exterminator gobbler = 0
        );

    virtual ~ACE_Service_Type_Impl (void);

## Pure virtual interface (must be defined by the subclass).

    virtual int suspend (void) const = 0;

    virtual int resume (void) const = 0;

    virtual int init (int argc, ASYS_TCHAR *argv[]) const = 0;

    virtual int fini (void) const;

    virtual int info (ASYS_TCHAR **str, size_t len) const = 0;

    void *object (void) const;

The pointer to the service.

    const ASYS_TCHAR *name (void) const;

Get the name of the service.

    void name (const ASYS_TCHAR *);

Set the name of the service.

    void dump (void) const;

Dump the state of an object.

    ACE_ALLOC_HOOK_DECLARE;

Declare the dynamic allocation hooks.

## AUTHOR

Doug Schmidt

## LIBRARY

ace