diff options
Diffstat (limited to 'TAO/orbsvcs/tests/AVStreams')
7 files changed, 45 insertions, 21 deletions
diff --git a/TAO/orbsvcs/tests/AVStreams/Component_Switching/sender.cpp b/TAO/orbsvcs/tests/AVStreams/Component_Switching/sender.cpp index 7f0336cc487..f6b184d02f6 100644 --- a/TAO/orbsvcs/tests/AVStreams/Component_Switching/sender.cpp +++ b/TAO/orbsvcs/tests/AVStreams/Component_Switching/sender.cpp @@ -8,8 +8,12 @@ #include "tao/Strategies/advanced_resource.h" -typedef ACE_Singleton<Sender, ACE_Null_Mutex> SENDER; -/// Create a singleton instance of the 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 g_shutdown = 0; /// Flag set when a signal is raised. @@ -507,17 +511,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/server.cpp b/TAO/orbsvcs/tests/AVStreams/Multicast/server.cpp index 15c8d49408e..16e94ae9295 100644 --- a/TAO/orbsvcs/tests/AVStreams/Multicast/server.cpp +++ b/TAO/orbsvcs/tests/AVStreams/Multicast/server.cpp @@ -232,17 +232,19 @@ 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 <FTP_Server_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl>; template class TAO_AV_Endpoint_Reactive_Strategy <FTP_Server_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl>; #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 <FTP_Server_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl> #pragma instantiate TAO_AV_Endpoint_Reactive_Strategy <FTP_Server_StreamEndPoint,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/Multicast/server.h b/TAO/orbsvcs/tests/AVStreams/Multicast/server.h index 1aec3d351c7..a92714819df 100644 --- a/TAO/orbsvcs/tests/AVStreams/Multicast/server.h +++ b/TAO/orbsvcs/tests/AVStreams/Multicast/server.h @@ -49,4 +49,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/Pluggable/ftp.cpp b/TAO/orbsvcs/tests/AVStreams/Pluggable/ftp.cpp index 55bfa9e1048..93c65d38ed2 100644 --- a/TAO/orbsvcs/tests/AVStreams/Pluggable/ftp.cpp +++ b/TAO/orbsvcs/tests/AVStreams/Pluggable/ftp.cpp @@ -479,21 +479,24 @@ main (int argc, } ACE_ENDTRY; ACE_CHECK_RETURN (-1); + + CLIENT::close (); + 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/Pluggable/ftp.h b/TAO/orbsvcs/tests/AVStreams/Pluggable/ftp.h index 50e7a20e39b..4f405b5a9da 100644 --- a/TAO/orbsvcs/tests/AVStreams/Pluggable/ftp.h +++ b/TAO/orbsvcs/tests/AVStreams/Pluggable/ftp.h @@ -167,7 +167,7 @@ private: }; -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/Simple_Two_Stage/sender.cpp b/TAO/orbsvcs/tests/AVStreams/Simple_Two_Stage/sender.cpp index f37db66cb27..da831b31ff3 100644 --- a/TAO/orbsvcs/tests/AVStreams/Simple_Two_Stage/sender.cpp +++ b/TAO/orbsvcs/tests/AVStreams/Simple_Two_Stage/sender.cpp @@ -5,9 +5,15 @@ #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) @@ -488,17 +494,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/sender.cpp b/TAO/orbsvcs/tests/AVStreams/Simple_Two_Stage_With_QoS/sender.cpp index cbb57850a44..c683791eeb8 100644 --- a/TAO/orbsvcs/tests/AVStreams/Simple_Two_Stage_With_QoS/sender.cpp +++ b/TAO/orbsvcs/tests/AVStreams/Simple_Two_Stage_With_QoS/sender.cpp @@ -7,7 +7,7 @@ static u_long peak_bandwidth = 18400; -typedef ACE_Singleton<Sender, ACE_Null_Mutex> SENDER; +typedef ACE_Unmanaged_Singleton<Sender, ACE_Null_Mutex> SENDER; // Create a singleton instance of the Sender. // The time that should lapse between two consecutive frames sent. @@ -565,17 +565,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 */ |