diff options
author | Ossama Othman <ossama-othman@users.noreply.github.com> | 2005-04-28 22:14:37 +0000 |
---|---|---|
committer | Ossama Othman <ossama-othman@users.noreply.github.com> | 2005-04-28 22:14:37 +0000 |
commit | 1e95abdb708fe366d207e7c4c1e51f3e6423358c (patch) | |
tree | 664ce3e0fe1208cab6f6914f2328a6bbff7b58c0 | |
parent | f205be03c4a67ee5354704abf1acf349fe605079 (diff) | |
download | ATCD-1e95abdb708fe366d207e7c4c1e51f3e6423358c.tar.gz |
ChangeLogTag:Thu Apr 28 15:01:38 2005 Ossama Othman <ossama@dre.vanderbilt.edu>
24 files changed, 168 insertions, 75 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog index 1b9f71a9db7..dccc094b75f 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,3 +1,36 @@ +Thu Apr 28 15:01:38 2005 Ossama Othman <ossama@dre.vanderbilt.edu> + + * orbsvcs/tests/AVStreams/Modify_QoS/receiver.cpp: + * orbsvcs/tests/AVStreams/Simple_Two_Stage_With_QoS/receiver.cpp: + + Removed unused singleton. + + * orbsvcs/tests/AVStreams/Asynch_Three_Stage/distributer.cpp: + * orbsvcs/tests/AVStreams/Asynch_Three_Stage/sender.cpp: + * orbsvcs/tests/AVStreams/Bidirectional_Flows/receiver.cpp: + * orbsvcs/tests/AVStreams/Bidirectional_Flows/sender.cpp: + * orbsvcs/tests/AVStreams/Component_Switching/distributer.cpp: + * orbsvcs/tests/AVStreams/Full_Profile/ftp.cpp: + * orbsvcs/tests/AVStreams/Full_Profile/ftp.h: + * orbsvcs/tests/AVStreams/Full_Profile/server.cpp: + * orbsvcs/tests/AVStreams/Full_Profile/server.h: + * orbsvcs/tests/AVStreams/Modify_QoS/sender.cpp: + * orbsvcs/tests/AVStreams/Multicast/ftp.cpp: + * orbsvcs/tests/AVStreams/Multicast/ftp.h: + * orbsvcs/tests/AVStreams/Multicast_Full_Profile/ftp.cpp: + * orbsvcs/tests/AVStreams/Multicast_Full_Profile/ftp.h: + * orbsvcs/tests/AVStreams/Multicast_Full_Profile/server.cpp: + * orbsvcs/tests/AVStreams/Multicast_Full_Profile/server.h: + * orbsvcs/tests/AVStreams/Multiple_Flows/receiver.cpp: + * orbsvcs/tests/AVStreams/Multiple_Flows/sender.cpp: + * orbsvcs/tests/AVStreams/Pluggable_Flow_Protocol/sender.cpp: + * orbsvcs/tests/AVStreams/Simple_Three_Stage/distributer.cpp: + * orbsvcs/tests/AVStreams/Simple_Three_Stage/sender.cpp: + + Converted remaining ACE_Singletons to ACE_Unmanaged_Singleton. + See the ChangeLog entry "Wed Apr 27 23:36:45 2005 Ossama Othman + <ossama@dre.vanderbilt.edu>" for details. + Thu Apr 28 00:09:00 2005 Ossama Othman <ossama@dre.vanderbilt.edu> * tao/TypeCode.cpp (~TypeCode): diff --git a/TAO/orbsvcs/tests/AVStreams/Asynch_Three_Stage/distributer.cpp b/TAO/orbsvcs/tests/AVStreams/Asynch_Three_Stage/distributer.cpp index a76993a7587..b2e7d080407 100644 --- a/TAO/orbsvcs/tests/AVStreams/Asynch_Three_Stage/distributer.cpp +++ b/TAO/orbsvcs/tests/AVStreams/Asynch_Three_Stage/distributer.cpp @@ -4,7 +4,7 @@ #include "ace/Get_Opt.h" #include "orbsvcs/AV/Protocol_Factory.h" -typedef ACE_Singleton<Distributer, ACE_Null_Mutex> DISTRIBUTER; +typedef ACE_Unmanaged_Singleton<Distributer, ACE_Null_Mutex> DISTRIBUTER; int Distributer_Sender_StreamEndPoint::get_callback (const char *, @@ -298,21 +298,23 @@ main (int argc, ACE_ENDTRY; ACE_CHECK_RETURN (-1); + DISTRIBUTER::close (); // Explicitly finalize the Unmanaged_Singleton. + return 0; } #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Singleton <Distributer,ACE_Null_Mutex>; +template class ACE_Unmanaged_Singleton <Distributer,ACE_Null_Mutex>; template class TAO_AV_Endpoint_Reactive_Strategy_A<Distributer_Sender_StreamEndPoint, TAO_VDev, AV_Null_MediaCtrl>; template class TAO_AV_Endpoint_Reactive_Strategy <Distributer_Sender_StreamEndPoint, TAO_VDev, AV_Null_MediaCtrl>; template class TAO_AV_Endpoint_Reactive_Strategy_B<Distributer_Receiver_StreamEndPoint, TAO_VDev, AV_Null_MediaCtrl>; template class TAO_AV_Endpoint_Reactive_Strategy <Distributer_Receiver_StreamEndPoint, TAO_VDev, AV_Null_MediaCtrl>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Singleton <Distributer,ACE_Null_Mutex> +#pragma instantiate ACE_Unmanaged_Singleton <Distributer,ACE_Null_Mutex> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy_A<Distributer_Sender_StreamEndPoint, TAO_VDev, AV_Null_MediaCtrl> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy <Distributer_Sender_StreamEndPoint, TAO_VDev, AV_Null_MediaCtrl> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy_B<Distributer_Receiver_StreamEndPoint, TAO_VDev, AV_Null_MediaCtrl> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy <Distributer_Receiver_StreamEndPoint, TAO_VDev, AV_Null_MediaCtrl> #elif defined (ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION) -template ACE_Singleton<Distributer, ACE_Null_Mutex> *ACE_Singleton<Distributer, ACE_Null_Mutex>::singleton_; +template ACE_Unmanaged_Singleton<Distributer, ACE_Null_Mutex> *ACE_Unmanaged_Singleton<Distributer, ACE_Null_Mutex>::singleton_; #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/tests/AVStreams/Asynch_Three_Stage/sender.cpp b/TAO/orbsvcs/tests/AVStreams/Asynch_Three_Stage/sender.cpp index 96876f4ee06..480e9d7200f 100644 --- a/TAO/orbsvcs/tests/AVStreams/Asynch_Three_Stage/sender.cpp +++ b/TAO/orbsvcs/tests/AVStreams/Asynch_Three_Stage/sender.cpp @@ -5,9 +5,13 @@ #include "ace/Get_Opt.h" #include "ace/High_Res_Timer.h" -typedef ACE_Singleton<Sender, ACE_Null_Mutex> SENDER; // Create a singleton instance of the Sender. +// An Unmanaged_Singleton is used to avoid static object destruction +// order related problems since the underlying singleton object +// contains references to static TypeCodes. +typedef ACE_Unmanaged_Singleton<Sender, ACE_Null_Mutex> SENDER; + int Sender_StreamEndPoint::get_callback (const char *, TAO_AV_Callback *&callback) @@ -344,17 +348,20 @@ main (int argc, } ACE_ENDTRY; ACE_CHECK_RETURN (-1); + + SENDER::close (); // Explicitly finalize the Unmanaged_Singleton. + return 0; } #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Singleton <Sender,ACE_Null_Mutex>; +template class ACE_Unmanaged_Singleton <Sender,ACE_Null_Mutex>; template class TAO_AV_Endpoint_Reactive_Strategy_A<Sender_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl>; template class TAO_AV_Endpoint_Reactive_Strategy<Sender_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Singleton <Sender,ACE_Null_Mutex> +#pragma instantiate ACE_Unmanaged_Singleton <Sender,ACE_Null_Mutex> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy_A<Sender_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy<Sender_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl> #elif defined (ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION) -template ACE_Singleton<Sender, ACE_Null_Mutex> *ACE_Singleton<Sender, ACE_Null_Mutex>::singleton_; +template ACE_Unmanaged_Singleton<Sender, ACE_Null_Mutex> *ACE_Unmanaged_Singleton<Sender, ACE_Null_Mutex>::singleton_; #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/tests/AVStreams/Bidirectional_Flows/receiver.cpp b/TAO/orbsvcs/tests/AVStreams/Bidirectional_Flows/receiver.cpp index 305fa236cf2..d5e95df6558 100644 --- a/TAO/orbsvcs/tests/AVStreams/Bidirectional_Flows/receiver.cpp +++ b/TAO/orbsvcs/tests/AVStreams/Bidirectional_Flows/receiver.cpp @@ -10,7 +10,7 @@ static FILE *output_file = 0; static const char *output_file_name = "output"; // File name of the file into which received data is written. -typedef ACE_Singleton<Receiver,ACE_Null_Mutex> RECEIVER; +typedef ACE_Unmanaged_Singleton<Receiver,ACE_Null_Mutex> RECEIVER; //Create a singleton instance of the receiver. int @@ -349,17 +349,19 @@ main (int argc, ACE_OS::fclose (output_file); + RECEIVER::close (); // Explicitly finalize the Unmanaged_Singleton. + return 0; } #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Singleton <Receiver,ACE_Null_Mutex>; +template class ACE_Unmanaged_Singleton <Receiver,ACE_Null_Mutex>; template class TAO_AV_Endpoint_Reactive_Strategy_B<Receiver_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl>; template class TAO_AV_Endpoint_Reactive_Strategy<Receiver_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Singleton <Receiver,ACE_Null_Mutex> +#pragma instantiate ACE_Unmanaged_Singleton <Receiver,ACE_Null_Mutex> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy_B<Receiver_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy<Receiver_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl> #elif defined (ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION) -template ACE_Singleton<Receiver, ACE_Null_Mutex> *ACE_Singleton<Receiver, ACE_Null_Mutex>::singleton_; +template ACE_Unmanaged_Singleton<Receiver, ACE_Null_Mutex> *ACE_Unmanaged_Singleton<Receiver, ACE_Null_Mutex>::singleton_; #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/tests/AVStreams/Bidirectional_Flows/sender.cpp b/TAO/orbsvcs/tests/AVStreams/Bidirectional_Flows/sender.cpp index b349a8bc5d5..7cea0017648 100644 --- a/TAO/orbsvcs/tests/AVStreams/Bidirectional_Flows/sender.cpp +++ b/TAO/orbsvcs/tests/AVStreams/Bidirectional_Flows/sender.cpp @@ -5,7 +5,7 @@ #include "ace/Get_Opt.h" #include "ace/High_Res_Timer.h" -typedef ACE_Singleton<Sender, ACE_Null_Mutex> SENDER; +typedef ACE_Unmanaged_Singleton<Sender, ACE_Null_Mutex> SENDER; // Create a singleton instance of the Sender. static FILE *output_file = 0; @@ -506,17 +506,20 @@ main (int argc, } ACE_ENDTRY; ACE_CHECK_RETURN (-1); + + SENDER::close (); // Explicitly finalize the Unmanaged_Singleton. + return 0; } #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Singleton <Sender,ACE_Null_Mutex>; +template class ACE_Unmanaged_Singleton <Sender,ACE_Null_Mutex>; template class TAO_AV_Endpoint_Reactive_Strategy_A<Sender_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl>; template class TAO_AV_Endpoint_Reactive_Strategy<Sender_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Singleton <Sender,ACE_Null_Mutex> +#pragma instantiate ACE_Unmanaged_Singleton <Sender,ACE_Null_Mutex> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy_A<Sender_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy<Sender_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl> #elif defined (ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION) -template ACE_Singleton<Sender, ACE_Null_Mutex> *ACE_Singleton<Sender, ACE_Null_Mutex>::singleton_; +template ACE_Unmanaged_Singleton<Sender, ACE_Null_Mutex> *ACE_Unmanaged_Singleton<Sender, ACE_Null_Mutex>::singleton_; #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/tests/AVStreams/Component_Switching/distributer.cpp b/TAO/orbsvcs/tests/AVStreams/Component_Switching/distributer.cpp index 920ae63318f..22daafbeedb 100644 --- a/TAO/orbsvcs/tests/AVStreams/Component_Switching/distributer.cpp +++ b/TAO/orbsvcs/tests/AVStreams/Component_Switching/distributer.cpp @@ -8,7 +8,7 @@ #include "tao/Strategies/advanced_resource.h" -typedef ACE_Singleton<Distributer, ACE_Null_Mutex> DISTRIBUTER; +typedef ACE_Unmanaged_Singleton<Distributer, ACE_Null_Mutex> DISTRIBUTER; // constructor. Signal_Handler::Signal_Handler (void) @@ -499,21 +499,23 @@ main (int argc, ACE_ENDTRY; ACE_CHECK_RETURN (-1); + DISTRIBUTER::close (); // Explicitly finalize the Unmanaged_Singleton. + return 0; } #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Singleton <Distributer,ACE_Null_Mutex>; +template class ACE_Unmanaged_Singleton <Distributer,ACE_Null_Mutex>; template class TAO_AV_Endpoint_Reactive_Strategy_A<Distributer_Sender_StreamEndPoint, TAO_VDev, AV_Null_MediaCtrl>; template class TAO_AV_Endpoint_Reactive_Strategy <Distributer_Sender_StreamEndPoint, TAO_VDev, AV_Null_MediaCtrl>; template class TAO_AV_Endpoint_Reactive_Strategy_B<Distributer_Receiver_StreamEndPoint, TAO_VDev, AV_Null_MediaCtrl>; template class TAO_AV_Endpoint_Reactive_Strategy <Distributer_Receiver_StreamEndPoint, TAO_VDev, AV_Null_MediaCtrl>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Singleton <Distributer,ACE_Null_Mutex> +#pragma instantiate ACE_Unmanaged_Singleton <Distributer,ACE_Null_Mutex> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy_A<Distributer_Sender_StreamEndPoint, TAO_VDev, AV_Null_MediaCtrl> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy <Distributer_Sender_StreamEndPoint, TAO_VDev, AV_Null_MediaCtrl> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy_B<Distributer_Receiver_StreamEndPoint, TAO_VDev, AV_Null_MediaCtrl> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy <Distributer_Receiver_StreamEndPoint, TAO_VDev, AV_Null_MediaCtrl> #elif defined (ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION) -template ACE_Singleton<Distributer, ACE_Null_Mutex> *ACE_Singleton<Distributer, ACE_Null_Mutex>::singleton_; +template ACE_Unmanaged_Singleton<Distributer, ACE_Null_Mutex> *ACE_Unmanaged_Singleton<Distributer, ACE_Null_Mutex>::singleton_; #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/tests/AVStreams/Full_Profile/ftp.cpp b/TAO/orbsvcs/tests/AVStreams/Full_Profile/ftp.cpp index 678ac494302..658f883fae2 100644 --- a/TAO/orbsvcs/tests/AVStreams/Full_Profile/ftp.cpp +++ b/TAO/orbsvcs/tests/AVStreams/Full_Profile/ftp.cpp @@ -389,17 +389,19 @@ main (int argc, ACE_ENDTRY; ACE_CHECK_RETURN (-1); + CLIENT::close (); // Explicitly finalize the Unmanaged_Singleton. + return 0; } #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Singleton <Client,ACE_Null_Mutex>; +template class ACE_Unmanaged_Singleton <Client,ACE_Null_Mutex>; template class TAO_AV_Endpoint_Reactive_Strategy_A<TAO_StreamEndPoint_A,TAO_VDev,AV_Null_MediaCtrl>; template class TAO_AV_Endpoint_Reactive_Strategy<TAO_StreamEndPoint_A,TAO_VDev,AV_Null_MediaCtrl>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Singleton <Client,ACE_Null_Mutex> +#pragma instantiate ACE_Unmanaged_Singleton <Client,ACE_Null_Mutex> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy_A<TAO_StreamEndPoint_A,TAO_VDev,AV_Null_MediaCtrl> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy<TAO_StreamEndPoint_A,TAO_VDev,AV_Null_MediaCtrl> #elif defined (ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION) -template ACE_Singleton<Client, ACE_Null_Mutex> *ACE_Singleton<Client, ACE_Null_Mutex>::singleton_; +template ACE_Unmanaged_Singleton<Client, ACE_Null_Mutex> *ACE_Unmanaged_Singleton<Client, ACE_Null_Mutex>::singleton_; #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/tests/AVStreams/Full_Profile/ftp.h b/TAO/orbsvcs/tests/AVStreams/Full_Profile/ftp.h index 132c98f1af8..bb0cfdd19c0 100644 --- a/TAO/orbsvcs/tests/AVStreams/Full_Profile/ftp.h +++ b/TAO/orbsvcs/tests/AVStreams/Full_Profile/ftp.h @@ -84,6 +84,6 @@ private: AVStreams::FlowProducer_var fep_a_obj_; }; -typedef ACE_Singleton<Client,ACE_Null_Mutex> CLIENT; +typedef ACE_Unmanaged_Singleton<Client,ACE_Null_Mutex> CLIENT; #endif /* TAO_AV_FTP_H */ diff --git a/TAO/orbsvcs/tests/AVStreams/Full_Profile/server.cpp b/TAO/orbsvcs/tests/AVStreams/Full_Profile/server.cpp index a0570b874a2..78863adf905 100644 --- a/TAO/orbsvcs/tests/AVStreams/Full_Profile/server.cpp +++ b/TAO/orbsvcs/tests/AVStreams/Full_Profile/server.cpp @@ -260,17 +260,19 @@ main (int argc, if (result < 0) ACE_ERROR_RETURN ((LM_ERROR,"SERVER::run failed\n"),1); + FTP_SERVER::close (); // Explicitly finalize the Unmanaged_Singleton. + return result; } #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Singleton <Server,ACE_Null_Mutex>; +template class ACE_Unmanaged_Singleton <Server,ACE_Null_Mutex>; template class TAO_AV_Endpoint_Reactive_Strategy_B <TAO_StreamEndPoint_B,TAO_VDev,AV_Null_MediaCtrl>; template class TAO_AV_Endpoint_Reactive_Strategy <TAO_StreamEndPoint_B,TAO_VDev,AV_Null_MediaCtrl>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -s#pragma instantiate ACE_Singleton <Server,ACE_Null_Mutex> +s#pragma instantiate ACE_Unmanaged_Singleton <Server,ACE_Null_Mutex> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy_B <TAO_StreamEndPoint_B,TAO_VDev,AV_Null_MediaCtrl> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy <TAO_StreamEndPoint_B,TAO_VDev,AV_Null_MediaCtrl> #elif defined (ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION) -template ACE_Singleton<Server, ACE_Null_Mutex> *ACE_Singleton<Server, ACE_Null_Mutex>::singleton_; +template ACE_Unmanaged_Singleton<Server, ACE_Null_Mutex> *ACE_Unmanaged_Singleton<Server, ACE_Null_Mutex>::singleton_; #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/tests/AVStreams/Full_Profile/server.h b/TAO/orbsvcs/tests/AVStreams/Full_Profile/server.h index 0117cc448a6..f88e8ee7c20 100644 --- a/TAO/orbsvcs/tests/AVStreams/Full_Profile/server.h +++ b/TAO/orbsvcs/tests/AVStreams/Full_Profile/server.h @@ -63,4 +63,4 @@ protected: AVStreams::FlowConsumer_var fep_b_obj_; }; -typedef ACE_Singleton<Server,ACE_Null_Mutex> FTP_SERVER; +typedef ACE_Unmanaged_Singleton<Server,ACE_Null_Mutex> FTP_SERVER; diff --git a/TAO/orbsvcs/tests/AVStreams/Modify_QoS/receiver.cpp b/TAO/orbsvcs/tests/AVStreams/Modify_QoS/receiver.cpp index c133ea05fe8..c936ad5116f 100644 --- a/TAO/orbsvcs/tests/AVStreams/Modify_QoS/receiver.cpp +++ b/TAO/orbsvcs/tests/AVStreams/Modify_QoS/receiver.cpp @@ -3,9 +3,6 @@ #include "receiver.h" #include "ace/Get_Opt.h" -typedef ACE_Singleton<Receiver, ACE_Null_Mutex> RECEIVER; -// Create a singleton instance of the Sender. - static FILE *output_file = 0; // File handle of the file into which received data is written. @@ -338,11 +335,9 @@ main (int argc, } #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Singleton <Receiver,ACE_Null_Mutex>; template class TAO_AV_Endpoint_Reactive_Strategy_B<Receiver_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl>; template class TAO_AV_Endpoint_Reactive_Strategy<Receiver_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Singleton <Receiver,ACE_Null_Mutex> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy_B<Receiver_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy<Receiver_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl> #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/tests/AVStreams/Modify_QoS/sender.cpp b/TAO/orbsvcs/tests/AVStreams/Modify_QoS/sender.cpp index 81d539e236a..25a28701ff3 100644 --- a/TAO/orbsvcs/tests/AVStreams/Modify_QoS/sender.cpp +++ b/TAO/orbsvcs/tests/AVStreams/Modify_QoS/sender.cpp @@ -5,9 +5,13 @@ #include "ace/Get_Opt.h" #include "ace/High_Res_Timer.h" -typedef ACE_Singleton<Sender, ACE_Null_Mutex> SENDER; // Create a singleton instance of the Sender. +// An Unmanaged_Singleton is used to avoid static object destruction +// order related problems since the underlying singleton object +// contains references to static TypeCodes. +typedef ACE_Unmanaged_Singleton<Sender, ACE_Null_Mutex> SENDER; + // The time that should lapse between two consecutive frames sent. ACE_Time_Value inter_frame_time; @@ -433,17 +437,20 @@ main (int argc, } ACE_ENDTRY; ACE_CHECK_RETURN (-1); + + SENDER::close (); // Explicitly finalize the Unmanaged_Singleton. + return 0; } #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Singleton <Sender,ACE_Null_Mutex>; +template class ACE_Unmanaged_Singleton <Sender,ACE_Null_Mutex>; template class TAO_AV_Endpoint_Reactive_Strategy_A<Sender_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl>; template class TAO_AV_Endpoint_Reactive_Strategy<Sender_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Singleton <Sender,ACE_Null_Mutex> +#pragma instantiate ACE_Unmanaged_Singleton <Sender,ACE_Null_Mutex> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy_A<Sender_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy<Sender_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl> #elif defined (ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION) -template ACE_Singleton<Sender, ACE_Null_Mutex> *ACE_Singleton<Sender, ACE_Null_Mutex>::singleton_; +template ACE_Unmanaged_Singleton<Sender, ACE_Null_Mutex> *ACE_Unmanaged_Singleton<Sender, ACE_Null_Mutex>::singleton_; #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/tests/AVStreams/Multicast/ftp.cpp b/TAO/orbsvcs/tests/AVStreams/Multicast/ftp.cpp index c890d602c08..23d83aca4fd 100644 --- a/TAO/orbsvcs/tests/AVStreams/Multicast/ftp.cpp +++ b/TAO/orbsvcs/tests/AVStreams/Multicast/ftp.cpp @@ -384,17 +384,19 @@ main (int argc, ACE_ENDTRY; ACE_CHECK_RETURN (-1); + CLIENT::close (); // Explicitly finalize the Unmanaged_Singleton. + return 0; } #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Singleton <Client,ACE_Null_Mutex>; +template class ACE_Unmanaged_Singleton <Client,ACE_Null_Mutex>; template class TAO_AV_Endpoint_Reactive_Strategy_A<FTP_Client_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl>; template class TAO_AV_Endpoint_Reactive_Strategy<FTP_Client_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Singleton <Client,ACE_Null_Mutex> +#pragma instantiate ACE_Unmanaged_Singleton <Client,ACE_Null_Mutex> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy_A<FTP_Client_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy<FTP_Client_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl> #elif defined (ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION) -template ACE_Singleton<Client, ACE_Null_Mutex> *ACE_Singleton<Client, ACE_Null_Mutex>::singleton_; +template ACE_Unmanaged_Singleton<Client, ACE_Null_Mutex> *ACE_Unmanaged_Singleton<Client, ACE_Null_Mutex>::singleton_; #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/tests/AVStreams/Multicast/ftp.h b/TAO/orbsvcs/tests/AVStreams/Multicast/ftp.h index ad0cf76d51d..9cd6cc7e47f 100644 --- a/TAO/orbsvcs/tests/AVStreams/Multicast/ftp.h +++ b/TAO/orbsvcs/tests/AVStreams/Multicast/ftp.h @@ -96,6 +96,6 @@ private: int use_sfp_; }; -typedef ACE_Singleton<Client,ACE_Null_Mutex> CLIENT; +typedef ACE_Unmanaged_Singleton<Client,ACE_Null_Mutex> CLIENT; #endif /* TAO_AV_FTP_H */ diff --git a/TAO/orbsvcs/tests/AVStreams/Multicast_Full_Profile/ftp.cpp b/TAO/orbsvcs/tests/AVStreams/Multicast_Full_Profile/ftp.cpp index 43bc3abcc7d..d938a9b2092 100644 --- a/TAO/orbsvcs/tests/AVStreams/Multicast_Full_Profile/ftp.cpp +++ b/TAO/orbsvcs/tests/AVStreams/Multicast_Full_Profile/ftp.cpp @@ -421,19 +421,21 @@ main (int argc, if (result < 0) ACE_ERROR_RETURN ((LM_ERROR,"client::run failed\n"),1); + CLIENT::close (); // Explicitly finalize the Unmanaged_Singleton. + return result; } #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Singleton <Client,ACE_Null_Mutex>; +template class ACE_Unmanaged_Singleton <Client,ACE_Null_Mutex>; template class TAO_AV_Endpoint_Reactive_Strategy_A<TAO_StreamEndPoint_A,TAO_VDev,AV_Null_MediaCtrl>; template class TAO_AV_Endpoint_Reactive_Strategy<TAO_StreamEndPoint_A,TAO_VDev,AV_Null_MediaCtrl>; template class TAO_FDev<FTP_Client_Producer, TAO_FlowConsumer>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Singleton <Client,ACE_Null_Mutex> +#pragma instantiate ACE_Unmanaged_Singleton <Client,ACE_Null_Mutex> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy_A<FTP_Client_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy<FTP_Client_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl> #pragma instantiate TAO_FDev<FTP_Client_Producer, TAO_FlowConsumer> #elif defined (ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION) -template ACE_Singleton<Client, ACE_Null_Mutex> *ACE_Singleton<Client, ACE_Null_Mutex>::singleton_; +template ACE_Unmanaged_Singleton<Client, ACE_Null_Mutex> *ACE_Unmanaged_Singleton<Client, ACE_Null_Mutex>::singleton_; #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/tests/AVStreams/Multicast_Full_Profile/ftp.h b/TAO/orbsvcs/tests/AVStreams/Multicast_Full_Profile/ftp.h index 08d558dc82b..acb8081d72d 100644 --- a/TAO/orbsvcs/tests/AVStreams/Multicast_Full_Profile/ftp.h +++ b/TAO/orbsvcs/tests/AVStreams/Multicast_Full_Profile/ftp.h @@ -83,6 +83,6 @@ private: int use_sfp_; }; -typedef ACE_Singleton<Client,ACE_Null_Mutex> CLIENT; +typedef ACE_Unmanaged_Singleton<Client,ACE_Null_Mutex> CLIENT; #endif /* TAO_AV_FTP_H */ diff --git a/TAO/orbsvcs/tests/AVStreams/Multicast_Full_Profile/server.cpp b/TAO/orbsvcs/tests/AVStreams/Multicast_Full_Profile/server.cpp index 0e4c94adb13..cd08d8582c4 100644 --- a/TAO/orbsvcs/tests/AVStreams/Multicast_Full_Profile/server.cpp +++ b/TAO/orbsvcs/tests/AVStreams/Multicast_Full_Profile/server.cpp @@ -281,20 +281,22 @@ main (int argc, if (result < 0) ACE_ERROR_RETURN ((LM_ERROR,"FTP_SERVER::run failed\n"),1); + FTP_SERVER::close (); // Explicitly finalize the Unmanaged_Singleton. + return result; } #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Singleton <Server,ACE_Null_Mutex>; +template class ACE_Unmanaged_Singleton <Server,ACE_Null_Mutex>; template class TAO_AV_Endpoint_Reactive_Strategy_B<TAO_StreamEndPoint_B, TAO_VDev, AV_Null_MediaCtrl>; template class TAO_AV_Endpoint_Reactive_Strategy<TAO_StreamEndPoint_B, TAO_VDev, AV_Null_MediaCtrl>; template class TAO_FDev<TAO_FlowProducer, FTP_Server_FlowEndPoint>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Singleton <Server,ACE_Null_Mutex> +#pragma instantiate ACE_Unmanaged_Singleton <Server,ACE_Null_Mutex> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy_B<TAO_StreamEndPoint_B, TAO_VDev, AV_Null_MediaCtrl> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy<TAO_StreamEndPoint_B, TAO_VDev, AV_Null_MediaCtrl> #pragma instantiate TAO_FDev<TAO_FlowProducer, FTP_Server_FlowEndPoint> #elif defined (ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION) -template ACE_Singleton<Server, ACE_Null_Mutex> *ACE_Singleton<Server, ACE_Null_Mutex>::singleton_; +template ACE_Unmanaged_Singleton<Server, ACE_Null_Mutex> *ACE_Unmanaged_Singleton<Server, ACE_Null_Mutex>::singleton_; #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/tests/AVStreams/Multicast_Full_Profile/server.h b/TAO/orbsvcs/tests/AVStreams/Multicast_Full_Profile/server.h index b292ff910e5..bdd2957c2ec 100644 --- a/TAO/orbsvcs/tests/AVStreams/Multicast_Full_Profile/server.h +++ b/TAO/orbsvcs/tests/AVStreams/Multicast_Full_Profile/server.h @@ -67,4 +67,4 @@ protected: char *protocol_; }; -typedef ACE_Singleton<Server,ACE_Null_Mutex> FTP_SERVER; +typedef ACE_Unmanaged_Singleton<Server,ACE_Null_Mutex> FTP_SERVER; diff --git a/TAO/orbsvcs/tests/AVStreams/Multiple_Flows/receiver.cpp b/TAO/orbsvcs/tests/AVStreams/Multiple_Flows/receiver.cpp index 2995e25e9b5..b59e7e8b871 100644 --- a/TAO/orbsvcs/tests/AVStreams/Multiple_Flows/receiver.cpp +++ b/TAO/orbsvcs/tests/AVStreams/Multiple_Flows/receiver.cpp @@ -6,8 +6,13 @@ int endstream = 0; -typedef ACE_Singleton<Receiver,ACE_Null_Mutex> RECEIVER; -//Create a singleton instance of the receiver. +// Create a singleton instance of the Sender. + +// An Unmanaged_Singleton is used to avoid static object destruction +// order related problems since the underlying singleton object +// contains references to static TypeCodes. +typedef ACE_Unmanaged_Singleton<Receiver,ACE_Null_Mutex> RECEIVER; + int Receiver_StreamEndPoint::get_callback (const char *flow_name, @@ -291,17 +296,19 @@ main (int argc, ACE_ENDTRY; ACE_CHECK_RETURN (-1); + RECEIVER::close (); // Explicitly finalize the Unmanaged_Singleton. + return 0; } #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Singleton <Receiver,ACE_Null_Mutex>; +template class ACE_Unmanaged_Singleton <Receiver,ACE_Null_Mutex>; template class TAO_AV_Endpoint_Reactive_Strategy_B<Receiver_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl>; template class TAO_AV_Endpoint_Reactive_Strategy<Receiver_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Singleton <Receiver,ACE_Null_Mutex> +#pragma instantiate ACE_Unmanaged_Singleton <Receiver,ACE_Null_Mutex> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy_B<Receiver_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy<Receiver_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl> #elif defined (ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION) -template ACE_Singleton<Receiver, ACE_Null_Mutex> *ACE_Singleton<Receiver, ACE_Null_Mutex>::singleton_; +template ACE_Unmanaged_Singleton<Receiver, ACE_Null_Mutex> *ACE_Unmanaged_Singleton<Receiver, ACE_Null_Mutex>::singleton_; #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/tests/AVStreams/Multiple_Flows/sender.cpp b/TAO/orbsvcs/tests/AVStreams/Multiple_Flows/sender.cpp index 732b2e62fb4..359b843199e 100644 --- a/TAO/orbsvcs/tests/AVStreams/Multiple_Flows/sender.cpp +++ b/TAO/orbsvcs/tests/AVStreams/Multiple_Flows/sender.cpp @@ -5,9 +5,13 @@ #include "ace/Get_Opt.h" #include "ace/High_Res_Timer.h" -typedef ACE_Singleton<Sender, ACE_Null_Mutex> SENDER; // Create a singleton instance of the Sender. +// An Unmanaged_Singleton is used to avoid static object destruction +// order related problems since the underlying singleton object +// contains references to static TypeCodes. +typedef ACE_Unmanaged_Singleton<Sender, ACE_Null_Mutex> SENDER; + int Sender_StreamEndPoint::get_callback (const char *, @@ -423,23 +427,26 @@ main (int argc, } ACE_ENDTRY; ACE_CHECK_RETURN (-1); + + SENDER::close (); // Explicitly finalize the Unmanaged_Singleton. + return 0; } #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Singleton <Sender,ACE_Null_Mutex>; +template class ACE_Unmanaged_Singleton <Sender,ACE_Null_Mutex>; template class TAO_AV_Endpoint_Reactive_Strategy_A<Sender_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl>; template class TAO_AV_Endpoint_Reactive_Strategy<Sender_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl>; template class ACE_Node <TAO_AV_Protocol_Object*>; template class ACE_Unbounded_Set <TAO_AV_Protocol_Object*>; template class ACE_Unbounded_Set_Iterator <TAO_AV_Protocol_Object*>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Singleton <Sender,ACE_Null_Mutex> +#pragma instantiate ACE_Unmanaged_Singleton <Sender,ACE_Null_Mutex> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy_A<Sender_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy<Sender_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl> #pragma instantiate ACE_Node <TAO_AV_Protocol_Object*> #pragma instantiate ACE_Unbounded_Set <TAO_AV_Protocol_Object*> #pragma instantiate ACE_Unbounded_Set_Iterator <TAO_AV_Protocol_Object*> #elif defined (ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION) -template ACE_Singleton<Sender, ACE_Null_Mutex> *ACE_Singleton<Sender, ACE_Null_Mutex>::singleton_; +template ACE_Unmanaged_Singleton<Sender, ACE_Null_Mutex> *ACE_Unmanaged_Singleton<Sender, ACE_Null_Mutex>::singleton_; #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/tests/AVStreams/Pluggable_Flow_Protocol/sender.cpp b/TAO/orbsvcs/tests/AVStreams/Pluggable_Flow_Protocol/sender.cpp index 06e7ec131c1..57a8178a145 100644 --- a/TAO/orbsvcs/tests/AVStreams/Pluggable_Flow_Protocol/sender.cpp +++ b/TAO/orbsvcs/tests/AVStreams/Pluggable_Flow_Protocol/sender.cpp @@ -5,9 +5,14 @@ #include "ace/Get_Opt.h" #include "ace/High_Res_Timer.h" -typedef ACE_Singleton<Sender, ACE_Null_Mutex> SENDER; // Create a singleton instance of the Sender. +// An Unmanaged_Singleton is used to avoid static object destruction +// order related problems since the underlying singleton object +// contains references to static TypeCodes. +typedef ACE_Unmanaged_Singleton<Sender, ACE_Null_Mutex> SENDER; + + int Sender_StreamEndPoint::get_callback (const char *, TAO_AV_Callback *&callback) @@ -401,17 +406,20 @@ main (int argc, } ACE_ENDTRY; ACE_CHECK_RETURN (-1); + + SENDER::close (); // Explicitly finalize the Unmanaged_Singleton. + return 0; } #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Singleton <Sender,ACE_Null_Mutex>; +template class ACE_Unmanaged_Singleton <Sender,ACE_Null_Mutex>; template class TAO_AV_Endpoint_Reactive_Strategy_A<Sender_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl>; template class TAO_AV_Endpoint_Reactive_Strategy<Sender_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Singleton <Sender,ACE_Null_Mutex> +#pragma instantiate ACE_Unmanaged_Singleton <Sender,ACE_Null_Mutex> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy_A<Sender_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy<Sender_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl> #elif defined (ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION) -template ACE_Singleton<Sender, ACE_Null_Mutex> *ACE_Singleton<Sender, ACE_Null_Mutex>::singleton_; +template ACE_Unmanaged_Singleton<Sender, ACE_Null_Mutex> *ACE_Unmanaged_Singleton<Sender, ACE_Null_Mutex>::singleton_; #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/tests/AVStreams/Simple_Three_Stage/distributer.cpp b/TAO/orbsvcs/tests/AVStreams/Simple_Three_Stage/distributer.cpp index ce2552d5887..e52a83a03b6 100644 --- a/TAO/orbsvcs/tests/AVStreams/Simple_Three_Stage/distributer.cpp +++ b/TAO/orbsvcs/tests/AVStreams/Simple_Three_Stage/distributer.cpp @@ -4,7 +4,11 @@ #include "ace/Get_Opt.h" #include "orbsvcs/AV/Protocol_Factory.h" -typedef ACE_Singleton<Distributer, ACE_Null_Mutex> DISTRIBUTER; +// An Unmanaged_Singleton is used to avoid static object destruction +// order related problems since the underlying singleton object +// contains references to static TypeCodes. + +typedef ACE_Unmanaged_Singleton<Distributer, ACE_Null_Mutex> DISTRIBUTER; int Distributer_Sender_StreamEndPoint::get_callback (const char *, @@ -363,21 +367,23 @@ main (int argc, ACE_ENDTRY; ACE_CHECK_RETURN (-1); + DISTRIBUTER::close (); // Explicitly finalize the Unmanaged_Singleton. + return 0; } #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Singleton <Distributer,ACE_Null_Mutex>; +template class ACE_Unmanaged_Singleton <Distributer,ACE_Null_Mutex>; template class TAO_AV_Endpoint_Reactive_Strategy_A<Distributer_Sender_StreamEndPoint, TAO_VDev, AV_Null_MediaCtrl>; template class TAO_AV_Endpoint_Reactive_Strategy <Distributer_Sender_StreamEndPoint, TAO_VDev, AV_Null_MediaCtrl>; template class TAO_AV_Endpoint_Reactive_Strategy_B<Distributer_Receiver_StreamEndPoint, TAO_VDev, AV_Null_MediaCtrl>; template class TAO_AV_Endpoint_Reactive_Strategy <Distributer_Receiver_StreamEndPoint, TAO_VDev, AV_Null_MediaCtrl>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Singleton <Distributer,ACE_Null_Mutex> +#pragma instantiate ACE_Unmanaged_Singleton <Distributer,ACE_Null_Mutex> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy_A<Distributer_Sender_StreamEndPoint, TAO_VDev, AV_Null_MediaCtrl> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy <Distributer_Sender_StreamEndPoint, TAO_VDev, AV_Null_MediaCtrl> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy_B<Distributer_Receiver_StreamEndPoint, TAO_VDev, AV_Null_MediaCtrl> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy <Distributer_Receiver_StreamEndPoint, TAO_VDev, AV_Null_MediaCtrl> #elif defined (ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION) -template ACE_Singleton<Distributer, ACE_Null_Mutex> *ACE_Singleton<Distributer, ACE_Null_Mutex>::singleton_; +template ACE_Unmanaged_Singleton<Distributer, ACE_Null_Mutex> *ACE_Unmanaged_Singleton<Distributer, ACE_Null_Mutex>::singleton_; #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/tests/AVStreams/Simple_Three_Stage/sender.cpp b/TAO/orbsvcs/tests/AVStreams/Simple_Three_Stage/sender.cpp index 947b35715d5..ff9a8cc915c 100644 --- a/TAO/orbsvcs/tests/AVStreams/Simple_Three_Stage/sender.cpp +++ b/TAO/orbsvcs/tests/AVStreams/Simple_Three_Stage/sender.cpp @@ -5,9 +5,13 @@ #include "ace/Get_Opt.h" #include "ace/High_Res_Timer.h" -typedef ACE_Singleton<Sender, ACE_Null_Mutex> SENDER; // Create a singleton instance of the Sender. +// An Unmanaged_Singleton is used to avoid static object destruction +// order related problems since the underlying singleton object +// contains references to static TypeCodes. +typedef ACE_Unmanaged_Singleton<Sender, ACE_Null_Mutex> SENDER; + int Sender_StreamEndPoint::get_callback (const char *, TAO_AV_Callback *&callback) @@ -378,17 +382,20 @@ main (int argc, } ACE_ENDTRY; ACE_CHECK_RETURN (-1); + + SENDER::close (); // Explicitly finalize the Unmanaged_Singleton. + return 0; } #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Singleton <Sender,ACE_Null_Mutex>; +template class ACE_Unmanaged_Singleton <Sender,ACE_Null_Mutex>; template class TAO_AV_Endpoint_Reactive_Strategy_A<Sender_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl>; template class TAO_AV_Endpoint_Reactive_Strategy<Sender_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Singleton <Sender,ACE_Null_Mutex> +#pragma instantiate ACE_Unmanaged_Singleton <Sender,ACE_Null_Mutex> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy_A<Sender_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy<Sender_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl> #elif defined (ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION) -template ACE_Singleton<Sender, ACE_Null_Mutex> *ACE_Singleton<Sender, ACE_Null_Mutex>::singleton_; +template ACE_Unmanaged_Singleton<Sender, ACE_Null_Mutex> *ACE_Unmanaged_Singleton<Sender, ACE_Null_Mutex>::singleton_; #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/tests/AVStreams/Simple_Two_Stage_With_QoS/receiver.cpp b/TAO/orbsvcs/tests/AVStreams/Simple_Two_Stage_With_QoS/receiver.cpp index 51f203aa0b2..1425b8c59a6 100644 --- a/TAO/orbsvcs/tests/AVStreams/Simple_Two_Stage_With_QoS/receiver.cpp +++ b/TAO/orbsvcs/tests/AVStreams/Simple_Two_Stage_With_QoS/receiver.cpp @@ -3,9 +3,6 @@ #include "receiver.h" #include "ace/Get_Opt.h" -typedef ACE_Singleton<Receiver, ACE_Null_Mutex> RECEIVER; -// Create a singleton instance of the Sender. - static FILE *output_file = 0; // File handle of the file into which received data is written. @@ -259,15 +256,15 @@ main (int argc, ACE_OS::fclose (output_file); + + return 0; } #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Singleton <Receiver,ACE_Null_Mutex>; template class TAO_AV_Endpoint_Reactive_Strategy_B<Receiver_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl>; template class TAO_AV_Endpoint_Reactive_Strategy<Receiver_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Singleton <Receiver,ACE_Null_Mutex> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy_B<Receiver_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy<Receiver_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl> #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ |