summaryrefslogtreecommitdiff
path: root/ace/Service_Types.h
diff options
context:
space:
mode:
Diffstat (limited to 'ace/Service_Types.h')
-rw-r--r--ace/Service_Types.h23
1 files changed, 19 insertions, 4 deletions
diff --git a/ace/Service_Types.h b/ace/Service_Types.h
index fccf76b5f02..eed14e8ed2f 100644
--- a/ace/Service_Types.h
+++ b/ace/Service_Types.h
@@ -43,7 +43,8 @@ public:
ACE_Service_Type_Impl (void *object,
const ACE_TCHAR *s_name,
u_int flags = 0,
- ACE_Service_Object_Exterminator gobbler = 0);
+ ACE_Service_Object_Exterminator gobbler = 0,
+ int stype = ACE_Service_Type::INVALID_TYPE);
virtual ~ACE_Service_Type_Impl (void);
// = Pure virtual interface (must be defined by the subclass).
@@ -51,6 +52,7 @@ public:
virtual int resume (void) const = 0;
virtual int init (int argc, ACE_TCHAR *argv[]) const = 0;
virtual int fini (void) const;
+ virtual int fini_delete (void) const;
virtual int info (ACE_TCHAR **str, size_t len) const = 0;
/// The pointer to the service.
@@ -65,6 +67,10 @@ public:
/// Dump the state of an object.
void dump (void) const;
+ /// Getter and setter for service_type_.
+ int service_type(void) const;
+ void service_type(int stype);
+
/// Declare the dynamic allocation hooks.
ACE_ALLOC_HOOK_DECLARE;
@@ -81,6 +87,11 @@ protected:
/// Flags that control serivce behavior (particularly deletion).
u_int flags_;
+
+ /// Stores the enum that represents the concrete type of this ACE_Service_Type_Impl.
+ /// Possible values are ACE_Service_Type::SERVICE_OBJECT, ACE_Service_Type::MODULE, and
+ /// ACE_Service_Type::STREAM.
+ int service_type_;
};
/**
@@ -96,7 +107,8 @@ public:
ACE_Service_Object_Type (void *so,
const ACE_TCHAR *name,
u_int flags = 0,
- ACE_Service_Object_Exterminator gobbler = 0);
+ ACE_Service_Object_Exterminator gobbler = 0,
+ int stype = ACE_Service_Type::SERVICE_OBJECT);
~ACE_Service_Object_Type (void);
@@ -124,7 +136,8 @@ public:
// = Initialization method.
ACE_Module_Type (void *m, // Really an ACE_Module *.
const ACE_TCHAR *identifier,
- u_int flags = 0);
+ u_int flags = 0,
+ int stype = ACE_Service_Type::MODULE);
~ACE_Module_Type (void);
@@ -164,7 +177,9 @@ public:
// = Initialization method.
ACE_Stream_Type (void *s, // Really an ACE_Stream *.
const ACE_TCHAR *identifier,
- u_int flags = 0);
+ u_int flags = 0,
+ int stype = ACE_Service_Type::STREAM);
+
~ACE_Stream_Type (void);