ACE_Service_Type Class Reference

Keeps track of information related to the various ACE_Service_Type_Impl subclasses. More...

#include <Service_Object.h>

Collaboration diagram for ACE_Service_Type:

Collaboration graph
[legend]
List of all members.

Public Types

enum  { DELETE_OBJ = 1, DELETE_THIS = 2 }
enum  { SERVICE_OBJECT = ACE_SVC_OBJ_T, MODULE = ACE_MODULE_T, STREAM = ACE_STREAM_T, INVALID_TYPE = -1 }

Public Member Functions

 ACE_Service_Type (const ACE_TCHAR *n, ACE_Service_Type_Impl *o, const ACE_DLL &dll, int active)
 ACE_Service_Type (const ACE_TCHAR *n, ACE_Service_Type_Impl *o, ACE_SHLIB_HANDLE handle, int active)
 ~ACE_Service_Type (void)
const ACE_TCHARname (void) const
void name (const ACE_TCHAR *)
const ACE_Service_Type_Impltype (void) const
void type (const ACE_Service_Type_Impl *, int active=1)
bool is_forward_declaration (void) const
int suspend (void) const
int resume (void) const
int active (void) const
void active (int)
int fini (void)
 Calls on .

int fini_called (void) const
 Check if the service has been fini'ed.

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

const ACE_DLLdll () const
 Get to the DLL's implentation.


Public Attributes

 ACE_ALLOC_HOOK_DECLARE
 Declare the dynamic allocation hooks.


Private Attributes

const ACE_TCHARname_
 Humanly readible name of svc.

const ACE_Service_Type_Impltype_
 Pointer to C++ object that implements the svc.

ACE_DLL dll_
int active_
 1 if svc is currently active, otherwise 0.

int fini_already_called_
 1 if on has already been called, otherwise 0.


Detailed Description

Keeps track of information related to the various ACE_Service_Type_Impl subclasses.

This class acts as the interface of the "Bridge" pattern.

Definition at line 74 of file Service_Object.h.


Member Enumeration Documentation

anonymous enum
 

Enumeration values:
DELETE_OBJ  Delete the payload object.
DELETE_THIS  Delete the enclosing object.

Definition at line 77 of file Service_Object.h.

00078   {
00079     /// Delete the payload object.
00080     DELETE_OBJ = 1,
00081 
00082     /// Delete the enclosing object.
00083     DELETE_THIS = 2
00084   };

anonymous enum
 

Enumeration values:
SERVICE_OBJECT 
MODULE 
STREAM 
INVALID_TYPE 

Definition at line 86 of file Service_Object.h.

00087     {
00088       SERVICE_OBJECT = ACE_SVC_OBJ_T,
00089       MODULE = ACE_MODULE_T,
00090       STREAM = ACE_STREAM_T,
00091       INVALID_TYPE = -1
00092     };


Constructor & Destructor Documentation

ACE_Service_Type::ACE_Service_Type const ACE_TCHAR n,
ACE_Service_Type_Impl o,
const ACE_DLL dll,
int  active
 

Definition at line 45 of file Service_Object.cpp.

References ACE_TCHAR, ACE_TRACE, and name().

00049   : name_ (0),
00050     type_ (t),
00051     dll_ (dll),
00052     active_ (active),
00053     fini_already_called_ (0)
00054 {
00055   ACE_TRACE ("ACE_Service_Type::ACE_Service_Type");
00056   this->name (n);
00057 }

ACE_Service_Type::ACE_Service_Type const ACE_TCHAR n,
ACE_Service_Type_Impl o,
ACE_SHLIB_HANDLE  handle,
int  active
 

Definition at line 59 of file Service_Object.cpp.

References ACE_SHLIB_HANDLE, ACE_TCHAR, ACE_TRACE, name(), and ACE_DLL::set_handle().

00063   : name_ (0),
00064     type_ (t),
00065     active_ (active),
00066     fini_already_called_ (0)
00067 {
00068   ACE_TRACE ("ACE_Service_Type::ACE_Service_Type");
00069   ACE_DLL &dll = const_cast<ACE_DLL &> (this->dll_);
00070   dll.set_handle (handle);
00071   this->name (n);
00072 }

ACE_Service_Type::~ACE_Service_Type void   ) 
 

Definition at line 74 of file Service_Object.cpp.

References ACE_TRACE, and fini().

00075 {
00076   ACE_TRACE ("ACE_Service_Type::~ACE_Service_Type");
00077   this->fini ();
00078 
00079   delete [] const_cast <ACE_TCHAR *> (this->name_);
00080 }


Member Function Documentation

ACE_INLINE void ACE_Service_Type::active int   ) 
 

Definition at line 53 of file Service_Object.inl.

References ACE_TRACE.

00054 {
00055   ACE_TRACE ("ACE_Service_Type::active");
00056   this->active_ = turnon;
00057 }

ACE_INLINE int ACE_Service_Type::active void   )  const
 

Definition at line 46 of file Service_Object.inl.

References ACE_TRACE.

Referenced by ACE_Service_Manager::list_services(), and ACE_Service_Repository_Iterator::valid().

00047 {
00048   ACE_TRACE ("ACE_Service_Type::active");
00049   return this->active_ != 0;
00050 }

ACE_INLINE const ACE_DLL & ACE_Service_Type::dll  )  const
 

Get to the DLL's implentation.

Definition at line 66 of file Service_Object.inl.

References ACE_INLINE.

Referenced by ACE_Dynamic_Service_Dependency::init().

00067 {
00068   return this->dll_;
00069 }

ACE_BEGIN_VERSIONED_NAMESPACE_DECL void ACE_Service_Type::dump void   )  const
 

Dump the state of an object.

Definition at line 26 of file Service_Object.cpp.

References ACE_TRACE, and ACE_OS::fprintf().

Referenced by ACE_Service_Repository::fini(), ACE_Dynamic_Service_Dependency::init(), ACE_Service_Repository::insert(), and ACE_Service_Type_Forward_Declaration_Guard::~ACE_Service_Type_Forward_Declaration_Guard().

00027 {
00028 #if defined (ACE_HAS_DUMP)
00029   ACE_TRACE ("ACE_Service_Type::dump");
00030 #endif /* ACE_HAS_DUMP */
00031 
00032 
00033   // Using printf, since the log facility may not have
00034   // been initialized yet
00035   ACE_OS::fprintf(stderr,
00036                   "// [ST] dump, this=%p, name=%s, type=%p, so=%p, active=%d\n",
00037                   this,
00038                   this->name_,
00039                   this->type_,
00040                   (this->type_ != 0) ? this->type_->object () : 0,
00041                   this->active_);
00042 
00043 }

int ACE_Service_Type::fini void   ) 
 

Calls on .

Definition at line 83 of file Service_Object.cpp.

References ACE_Service_Type_Impl::fini(), and fini_already_called_.

Referenced by ACE_Service_Repository::fini(), and ~ACE_Service_Type().

00084 {
00085   if (!this->fini_already_called_)
00086     {
00087       this->fini_already_called_ = 1;
00088       if (this->type_ != 0)
00089   return this->type_->fini ();
00090       else
00091         return 1; // No implementation was found.
00092                   // Currently only makes sense for dummy ST, used to "reserve"
00093                   // a spot (kind of like forward-declarations) for a dynamic
00094                   // service. This is necessary to help enforce the correct
00095                   // finalization order, when such service also has any
00096                   // (dependent) static services
00097     }
00098   return 0;
00099 }

ACE_INLINE int ACE_Service_Type::fini_called void   )  const
 

Check if the service has been fini'ed.

Definition at line 60 of file Service_Object.inl.

References ACE_TRACE, and fini_already_called_.

Referenced by ACE_Service_Repository::find_i().

00061 {
00062   ACE_TRACE ("ACE_Service_Type::fini_called");
00063   return this->fini_already_called_;
00064 }

bool ACE_Service_Type::is_forward_declaration void   )  const
 

void ACE_Service_Type::name const ACE_TCHAR  ) 
 

Definition at line 143 of file Service_Object.cpp.

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

00144 {
00145   ACE_TRACE ("ACE_Service_Type::name");
00146 
00147   delete [] const_cast <ACE_TCHAR *> (this->name_);
00148   this->name_ = ACE::strnew (n);
00149 }

ACE_INLINE const ACE_TCHAR * ACE_Service_Type::name void   )  const
 

Definition at line 24 of file Service_Object.inl.

References ACE_TRACE.

Referenced by ACE_Service_Type(), ace_yyparse(), ACE_Service_Gestalt::initialize(), ACE_Service_Gestalt::initialize_i(), ACE_Service_Repository::insert(), and ACE_Service_Manager::list_services().

00025 {
00026   ACE_TRACE ("ACE_Service_Type::name");
00027   return this->name_;
00028 }

int ACE_Service_Type::resume void   )  const
 

Definition at line 110 of file Service_Object.cpp.

References ACE_TRACE, and ACE_Service_Type_Impl::resume().

Referenced by ACE_Service_Repository::resume().

00111 {
00112   ACE_TRACE ("ACE_Service_Type::resume");
00113   (const_cast<ACE_Service_Type *> (this))->active_ = 1;
00114   return this->type_->resume ();
00115 }

int ACE_Service_Type::suspend void   )  const
 

Definition at line 102 of file Service_Object.cpp.

References ACE_TRACE, and ACE_Service_Type_Impl::suspend().

Referenced by ACE_Service_Repository::suspend().

00103 {
00104   ACE_TRACE ("ACE_Service_Type::suspend");
00105   (const_cast<ACE_Service_Type *> (this))->active_ = 0;
00106   return this->type_->suspend ();
00107 }

ACE_INLINE void ACE_Service_Type::type const ACE_Service_Type_Impl ,
int  active = 1
 

Definition at line 38 of file Service_Object.inl.

References ACE_TRACE.

00039 {
00040   ACE_TRACE ("ACE_Service_Type::type");
00041   this->type_ = o;
00042   ((ACE_Service_Type *) this)->active_ = enabled;
00043 }

ACE_INLINE const ACE_Service_Type_Impl * ACE_Service_Type::type void   )  const
 

Definition at line 31 of file Service_Object.inl.

References ACE_TRACE.

Referenced by ace_get_module(), ace_yyparse(), ACE_Service_Gestalt::initialize(), ACE_Service_Gestalt::initialize_i(), ACE_Dynamic_Service_Base::instance(), ACE_Service_Manager::list_services(), and ACE_Service_Type_Forward_Declaration_Guard::~ACE_Service_Type_Forward_Declaration_Guard().

00032 {
00033   ACE_TRACE ("ACE_Service_Type::type");
00034   return this->type_;
00035 }


Member Data Documentation

ACE_Service_Type::ACE_ALLOC_HOOK_DECLARE
 

Declare the dynamic allocation hooks.

Definition at line 132 of file Service_Object.h.

int ACE_Service_Type::active_ [private]
 

1 if svc is currently active, otherwise 0.

Definition at line 146 of file Service_Object.h.

ACE_DLL ACE_Service_Type::dll_ [mutable, private]
 

ACE_DLL representing the shared object file (non-zero if dynamically linked).

Definition at line 143 of file Service_Object.h.

int ACE_Service_Type::fini_already_called_ [private]
 

1 if on has already been called, otherwise 0.

Definition at line 149 of file Service_Object.h.

Referenced by fini(), and fini_called().

const ACE_TCHAR* ACE_Service_Type::name_ [private]
 

Humanly readible name of svc.

Definition at line 136 of file Service_Object.h.

const ACE_Service_Type_Impl* ACE_Service_Type::type_ [private]
 

Pointer to C++ object that implements the svc.

Definition at line 139 of file Service_Object.h.


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