summaryrefslogtreecommitdiff
path: root/ace/Service_Types.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ace/Service_Types.cpp')
-rw-r--r--ace/Service_Types.cpp49
1 files changed, 25 insertions, 24 deletions
diff --git a/ace/Service_Types.cpp b/ace/Service_Types.cpp
index 684c0de6ac7..4552607640e 100644
--- a/ace/Service_Types.cpp
+++ b/ace/Service_Types.cpp
@@ -35,13 +35,11 @@ ACE_Service_Type_Impl::dump (void) const
ACE_Service_Type_Impl::ACE_Service_Type_Impl (void *so,
const ACE_TCHAR *s_name,
u_int f,
- ACE_Service_Object_Exterminator gobbler,
- int stype)
+ ACE_Service_Object_Exterminator gobbler)
: name_ (0),
obj_ (so),
gobbler_ (gobbler),
- flags_ (f),
- service_type_(stype)
+ flags_ (f)
{
ACE_TRACE ("ACE_Service_Type_Impl::ACE_Service_Type_Impl");
this->name (s_name);
@@ -81,19 +79,11 @@ ACE_Service_Type_Impl::fini (void) const
return 0;
}
-int
-ACE_Service_Type_Impl::fini_delete (void) const
-{
- ACE_TRACE ("ACE_Service_Type_Impl::fini_delete");
- return ACE_Service_Type_Impl::fini ();
-}
-
ACE_Service_Object_Type::ACE_Service_Object_Type (void *so,
const ACE_TCHAR *s_name,
u_int f,
- ACE_Service_Object_Exterminator gobbler,
- int stype)
- : ACE_Service_Type_Impl (so, s_name, f, gobbler, stype)
+ ACE_Service_Object_Exterminator gobbler)
+ : ACE_Service_Type_Impl (so, s_name, f, gobbler)
, initialized_ (-1)
{
ACE_TRACE ("ACE_Service_Object_Type::ACE_Service_Object_Type");
@@ -174,9 +164,8 @@ ACE_Module_Type::dump (void) const
ACE_Module_Type::ACE_Module_Type (void *m,
const ACE_TCHAR *m_name,
- u_int f,
- int stype)
- : ACE_Service_Type_Impl (m, m_name, f, 0, stype)
+ u_int f)
+ : ACE_Service_Type_Impl (m, m_name, f)
{
ACE_TRACE ("ACE_Module_Type::ACE_Module_Type");
}
@@ -241,8 +230,21 @@ int
ACE_Module_Type::fini (void) const
{
ACE_TRACE ("ACE_Module_Type::fini");
- // ACE_Module_Type(s) get deleted by fini_delete Bugzilla #3334
- return 0;
+
+ void *obj = this->object ();
+ MT_Module *mod = (MT_Module *) obj;
+ MT_Task *reader = mod->reader ();
+ MT_Task *writer = mod->writer ();
+
+ if (reader != 0)
+ reader->fini ();
+
+ if (writer != 0)
+ writer->fini ();
+
+ // Close the module and delete the memory.
+ mod->close (MT_Module::M_DELETE);
+ return ACE_Service_Type_Impl::fini ();
}
int
@@ -322,9 +324,8 @@ ACE_Stream_Type::resume (void) const
ACE_Stream_Type::ACE_Stream_Type (void *s,
const ACE_TCHAR *s_name,
- u_int f,
- int stype)
- : ACE_Service_Type_Impl (s, s_name, f, 0, stype),
+ u_int f)
+ : ACE_Service_Type_Impl (s, s_name, f),
head_ (0)
{
ACE_TRACE ("ACE_Stream_Type::ACE_Stream_Type");
@@ -434,14 +435,14 @@ ACE_Stream_Type::push (ACE_Module_Type *new_module)
}
ACE_Module_Type *
-ACE_Stream_Type::find (const ACE_TCHAR *mod_name) const
+ACE_Stream_Type::find (const ACE_TCHAR *module_name) const
{
ACE_TRACE ("ACE_Stream_Type::find");
for (ACE_Module_Type *m = this->head_;
m != 0;
m = m->link ())
- if (ACE_OS::strcmp (m->name (), mod_name) == 0)
+ if (ACE_OS::strcmp (m->name (), module_name) == 0)
return m;
return 0;