ACE_Service_Type_Impl Class Reference

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

#include <Service_Types.h>

Inheritance diagram for ACE_Service_Type_Impl:

Inheritance graph
[legend]
List of all members.

Public Member Functions

 ACE_Service_Type_Impl (void *object, const ACE_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, ACE_TCHAR *argv[]) const=0
virtual int fini (void) const
virtual int info (ACE_TCHAR **str, size_t len) const=0
void * object (void) const
 The pointer to the service.

const ACE_TCHARname (void) const
 Get the name of the service.

void name (const ACE_TCHAR *)
 Set the name of the service.

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


Public Attributes

 ACE_ALLOC_HOOK_DECLARE
 Declare the dynamic allocation hooks.


Protected Attributes

const ACE_TCHARname_
 Name of the service.

void * obj_
ACE_Service_Object_Exterminator gobbler_
 Destroy function to deallocate obj_.

u_int flags_
 Flags that control serivce behavior (particularly deletion).


Detailed Description

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.

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.

Definition at line 39 of file Service_Types.h.


Constructor & Destructor Documentation

ACE_Service_Type_Impl::ACE_Service_Type_Impl void *  object,
const ACE_TCHAR s_name,
u_int  flags = 0,
ACE_Service_Object_Exterminator  gobbler = 0
 

Definition at line 35 of file Service_Types.cpp.

References ACE_Service_Object_Exterminator, ACE_TCHAR, ACE_TRACE, and name().

00039   : name_ (0),
00040     obj_ (so),
00041     gobbler_ (gobbler),
00042     flags_ (f)
00043 {
00044   ACE_TRACE ("ACE_Service_Type_Impl::ACE_Service_Type_Impl");
00045   this->name (s_name);
00046 }

ACE_Service_Type_Impl::~ACE_Service_Type_Impl void   )  [virtual]
 

Definition at line 48 of file Service_Types.cpp.

References ACE_TRACE.

00049 {
00050   ACE_TRACE ("ACE_Service_Type_Impl::~ACE_Service_Type_Impl");
00051 
00052   // It's ok to call this, even though we may have already deleted it
00053   // in the fini() method since it would then be NULL.
00054   delete [] const_cast <ACE_TCHAR *> (this->name_);
00055 }


Member Function Documentation

void ACE_Service_Type_Impl::dump void   )  const
 

Dump the state of an object.

Reimplemented in ACE_Module_Type, and ACE_Stream_Type.

Definition at line 28 of file Service_Types.cpp.

References ACE_TRACE.

00029 {
00030 #if defined (ACE_HAS_DUMP)
00031   ACE_TRACE ("ACE_Service_Type_Impl::dump");
00032 #endif /* ACE_HAS_DUMP */
00033 }

int ACE_Service_Type_Impl::fini void   )  const [virtual]
 

Reimplemented in ACE_Service_Object_Type, ACE_Module_Type, and ACE_Stream_Type.

Definition at line 58 of file Service_Types.cpp.

References ACE_BIT_ENABLED, ACE_DEBUG, ACE_LIB_TEXT, ACE_TRACE, ACE::debug(), gobbler_, and LM_DEBUG.

Referenced by ACE_Stream_Type::fini(), ACE_Module_Type::fini(), ACE_Service_Object_Type::fini(), and ACE_Service_Type::fini().

00059 {
00060   ACE_TRACE ("ACE_Service_Type_Impl::fini");
00061   if (ACE::debug ())
00062     ACE_DEBUG ((LM_DEBUG,
00063                 ACE_LIB_TEXT ("destroying %s, flags = %d\n"),
00064                 this->name_,
00065                 this->flags_));
00066 
00067   delete [] const_cast <ACE_TCHAR *> (this->name_);
00068   (const_cast <ACE_Service_Type_Impl *> (this))->name_ = 0;
00069 
00070   if (ACE_BIT_ENABLED (this->flags_,
00071                        ACE_Service_Type::DELETE_OBJ))
00072     {
00073       if (gobbler_ != 0)
00074         gobbler_ (this->object ());
00075       else
00076         // Cast to remove const-ness.
00077         operator delete ((void *) this->object ());
00078     }
00079 
00080   if (ACE_BIT_ENABLED (this->flags_,
00081                        ACE_Service_Type::DELETE_THIS))
00082     delete const_cast <ACE_Service_Type_Impl *> (this);
00083 
00084   return 0;
00085 }

virtual int ACE_Service_Type_Impl::info ACE_TCHAR **  str,
size_t  len
const [pure virtual]
 

Implemented in ACE_Service_Object_Type, ACE_Module_Type, and ACE_Stream_Type.

Referenced by ACE_Service_Manager::list_services().

virtual int ACE_Service_Type_Impl::init int  argc,
ACE_TCHAR argv[]
const [pure virtual]
 

Implemented in ACE_Service_Object_Type, ACE_Module_Type, and ACE_Stream_Type.

Referenced by ACE_Service_Gestalt::initialize(), and ACE_Service_Gestalt::initialize_i().

ACE_INLINE void ACE_Service_Type_Impl::name const ACE_TCHAR  ) 
 

Set the name of the service.

Definition at line 24 of file Service_Types.inl.

References ACE_TCHAR, ACE_TRACE, ACE::strdelete(), and ACE::strnew().

00025 {
00026   ACE_TRACE ("ACE_Service_Type_Impl::name");
00027 
00028   ACE::strdelete (const_cast<ACE_TCHAR*> (this->name_));
00029   this->name_ = ACE::strnew (n);
00030 }

ACE_INLINE const ACE_TCHAR * ACE_Service_Type_Impl::name void   )  const
 

Get the name of the service.

Definition at line 17 of file Service_Types.inl.

References ACE_TRACE.

Referenced by ace_get_module(), ACE_Service_Type_Impl(), ACE_Stream_Type::find(), ACE_Stream_Type::fini(), and ACE_Stream_Type::remove().

00018 {
00019   ACE_TRACE ("ACE_Service_Type_Impl::name");
00020   return this->name_;
00021 }

ACE_BEGIN_VERSIONED_NAMESPACE_DECL ACE_INLINE void * ACE_Service_Type_Impl::object void   )  const
 

The pointer to the service.

Definition at line 10 of file Service_Types.inl.

References ACE_TRACE, and obj_.

Referenced by ace_get_module(), ACE_Stream_Type::fini(), ACE_Module_Type::fini(), ACE_Service_Object_Type::fini(), ACE_Service_Object_Type::info(), ACE_Module_Type::init(), ACE_Service_Object_Type::init(), ACE_Dynamic_Service_Base::instance(), ACE_Stream_Type::push(), ACE_Stream_Type::remove(), ACE_Module_Type::resume(), ACE_Service_Object_Type::resume(), ACE_Module_Type::suspend(), and ACE_Service_Object_Type::suspend().

00011 {
00012   ACE_TRACE ("ACE_Service_Type_Impl::object");
00013   return this->obj_;
00014 }

virtual int ACE_Service_Type_Impl::resume void   )  const [pure virtual]
 

Implemented in ACE_Service_Object_Type, ACE_Module_Type, and ACE_Stream_Type.

Referenced by ACE_Service_Type::resume().

virtual int ACE_Service_Type_Impl::suspend void   )  const [pure virtual]
 

Implemented in ACE_Service_Object_Type, ACE_Module_Type, and ACE_Stream_Type.

Referenced by ACE_Service_Type::suspend().


Member Data Documentation

ACE_Service_Type_Impl::ACE_ALLOC_HOOK_DECLARE
 

Declare the dynamic allocation hooks.

Reimplemented in ACE_Module_Type, and ACE_Stream_Type.

Definition at line 69 of file Service_Types.h.

u_int ACE_Service_Type_Impl::flags_ [protected]
 

Flags that control serivce behavior (particularly deletion).

Definition at line 83 of file Service_Types.h.

ACE_Service_Object_Exterminator ACE_Service_Type_Impl::gobbler_ [protected]
 

Destroy function to deallocate obj_.

Definition at line 80 of file Service_Types.h.

Referenced by fini().

const ACE_TCHAR* ACE_Service_Type_Impl::name_ [protected]
 

Name of the service.

Definition at line 73 of file Service_Types.h.

void* ACE_Service_Type_Impl::obj_ [protected]
 

Pointer to object that implements the service. This actually points to an ACE_Service_Object, ACE_Module, or ACE_Stream.

Definition at line 77 of file Service_Types.h.

Referenced by object().


The documentation for this class was generated from the following files:
Generated on Thu Nov 9 11:29:31 2006 for ACE by doxygen 1.3.6