summaryrefslogtreecommitdiff
path: root/ace/Object_Manager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ace/Object_Manager.cpp')
-rw-r--r--ace/Object_Manager.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/ace/Object_Manager.cpp b/ace/Object_Manager.cpp
index b20e7e6619a..9567e59d5d2 100644
--- a/ace/Object_Manager.cpp
+++ b/ace/Object_Manager.cpp
@@ -6,6 +6,7 @@
#include "ace/Containers.h"
#include "ace/Array.h"
#include "ace/Service_Config.h"
+#include "ace/Signal.h"
#include "ace/Log_Msg.h"
#include "ace/Token_Manager.h"
#include "ace/Synch.h"
@@ -31,6 +32,7 @@
# define ACE_APPLICATION_PREALLOCATED_ARRAY_DELETIONS
#endif /* ACE_APPLICATION_PREALLOCATED_ARRAY_DELETIONS */
+
// Static data.
ACE_Object_Manager *ACE_Object_Manager::instance_ = 0;
@@ -47,6 +49,8 @@ void *ACE_Object_Manager::preallocated_object[
void *ACE_Object_Manager::preallocated_array[
ACE_Object_Manager::ACE_PREALLOCATED_ARRAYS] = { 0 };
+ACE_Sig_Adapter *ace_service_config_sig_handler = 0;
+
// Handy macros for use by ACE_Object_Manager constructor to preallocate or
// delete an object or array, either statically (in global data) or
// dynamically (on the heap).
@@ -126,6 +130,11 @@ ACE_Object_Manager::ACE_Object_Manager (void)
ACE_APPLICATION_PREALLOCATED_OBJECT_DEFINITIONS
ACE_APPLICATION_PREALLOCATED_ARRAY_DEFINITIONS
+ // Construct the ACE_Service_Config's signal handler.
+ ACE_NEW (ace_service_config_sig_handler,
+ ACE_Sig_Adapter (&ACE_Service_Config::handle_signal));
+ ACE_Service_Config::signal_handler (ace_service_config_sig_handler);
+
#if defined (ACE_HAS_TSS_EMULATION)
// Initialize the main thread's TS storage.
ACE_TSS_Emulation::tss_open (ts_storage_);
@@ -501,6 +510,9 @@ ACE_Object_Manager::~ACE_Object_Manager (void)
// Close down Winsock (no-op on other platforms).
ACE_OS::socket_fini ();
+ delete ace_service_config_sig_handler;
+ ace_service_config_sig_handler = 0;
+
ACE_MT (delete lock_;
lock_ = 0);