From f946e249923a2624aef3e19d73126191104de86a Mon Sep 17 00:00:00 2001 From: doccvs Date: Fri, 13 Oct 2000 21:01:51 +0000 Subject: ChangeLogTag: Fri Oct 13 13:57:40 2000 Priyanka Gontla --- ace/Process_Manager.cpp | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'ace/Process_Manager.cpp') diff --git a/ace/Process_Manager.cpp b/ace/Process_Manager.cpp index afde854da19..cce3aa3f349 100644 --- a/ace/Process_Manager.cpp +++ b/ace/Process_Manager.cpp @@ -14,6 +14,20 @@ ACE_RCSID(ace, Process_Manager, "$Id$") +#if defined (ACE_HAS_SIG_C_FUNC) +extern "C" void +ACE_Process_Manager_cleanup (void *instance, void *arg) +{ + ACE_Process_Manager::cleanup (instance, arg); +} +#endif + +void +ACE_Process_Manager::cleanup (void *, void *) +{ + ACE_Process_Manager::close_singleton (); +} + class ACE_Managed_Process : public ACE_Process { // = TITLE @@ -114,6 +128,21 @@ ACE_Process_Manager::instance (void) ACE_Process_Manager, 0); ACE_Process_Manager::delete_instance_ = 1; + + // Register with the Object_Manager so that the wrapper to + // delete the proactor will be called when Object_Manager is + // being terminated. + +#if defined ACE_HAS_SIG_C_FUNC + ACE_Object_Manager::at_exit (ACE_Process_Manager::instance_, + ACE_Process_Manager_cleanup, + 0); +#else + ACE_Object_Manager::at_exit (ACE_Process_Manager::instance_, + ACE_Process_Manager::cleanup, + 0); +#endif /* ACE_HAS_SIG_C_FUNC */ + } } @@ -131,6 +160,20 @@ ACE_Process_Manager::instance (ACE_Process_Manager *tm) // We can't safely delete it since we don't know who created it! ACE_Process_Manager::delete_instance_ = 0; + // Register with the Object_Manager so that the wrapper to + // delete the proactor will be called when Object_Manager is + // being terminated. + +#if defined ACE_HAS_SIG_C_FUNC + ACE_Object_Manager::at_exit (ACE_Process_Manager::instance_, + ACE_Process_Manager_cleanup, + 0); +#else + ACE_Object_Manager::at_exit (ACE_Process_Manager::instance_, + ACE_Process_Manager::cleanup, + 0); +#endif /* ACE_HAS_SIG_C_FUNC */ + ACE_Process_Manager::instance_ = tm; return t; } -- cgit v1.2.1