summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorirfan <irfan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2000-08-01 08:31:17 +0000
committerirfan <irfan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2000-08-01 08:31:17 +0000
commit35926d466c6e34e4f0e1b2692e83ec395d3a572d (patch)
treecf01c4c6b07542b02c22f4d5f0069a47ce255392
parent5a479973f109dda836985c28d90c3fd02d7c6769 (diff)
downloadATCD-35926d466c6e34e4f0e1b2692e83ec395d3a572d.tar.gz
ChangeLogTag: Tue Aug 01 03:11:25 2000 Irfan Pyarali <irfan@cs.wustl.edu>
-rw-r--r--TAO/ChangeLogs/ChangeLog-02a10
-rw-r--r--TAO/tao/Object_Adapter.cpp25
-rw-r--r--TAO/tao/Object_Adapter.h10
-rw-r--r--TAO/tao/Object_Adapter.i11
-rw-r--r--TAO/tao/POAManager.cpp2
-rw-r--r--TAO/tests/Makefile1
-rw-r--r--TAO/tests/ORB_destroy/Makefile344
-rw-r--r--TAO/tests/ORB_destroy/ORB_destroy.cpp201
-rw-r--r--TAO/tests/ORB_destroy/ORB_destroy.dsp99
-rw-r--r--TAO/tests/ORB_destroy/ORB_destroy.dsw29
-rw-r--r--TAO/tests/ORB_destroy/README1
-rwxr-xr-xTAO/tests/ORB_destroy/run_test.pl24
-rw-r--r--TAO/tests/TAO_Tests.dsw24
-rw-r--r--TAO/version_tests.dsw15
-rwxr-xr-xbin/auto_compile_win32.pl2
-rw-r--r--bin/auto_run_tests.lst1
-rw-r--r--bin/run_all_list.pm4
17 files changed, 755 insertions, 48 deletions
diff --git a/TAO/ChangeLogs/ChangeLog-02a b/TAO/ChangeLogs/ChangeLog-02a
index ddb9690d94d..11864ba2e84 100644
--- a/TAO/ChangeLogs/ChangeLog-02a
+++ b/TAO/ChangeLogs/ChangeLog-02a
@@ -1,3 +1,13 @@
+Tue Aug 01 03:11:25 2000 Irfan Pyarali <irfan@cs.wustl.edu>
+
+ * tests/ORB_destroy: New test for funky poa and orb destruction.
+
+ * tao/Object_Adapter.cpp (deactivate): Removed function since it
+ was not necessary anymore.
+
+ * tao/POAManager.cpp (TAO_POA_Manager and ~TAO_POA_Manager):
+ Removed access to <poa_manager_set>.
+
Tue Aug 1 01:48:52 2000 Pradeep Gore <pradeep@cs.wustl.edu>
* orbsvcs/orbsvcs/Notify/Notify_Event_Manager.{h,cpp}:
diff --git a/TAO/tao/Object_Adapter.cpp b/TAO/tao/Object_Adapter.cpp
index 56740805c3f..bad62d109da 100644
--- a/TAO/tao/Object_Adapter.cpp
+++ b/TAO/tao/Object_Adapter.cpp
@@ -217,31 +217,6 @@ TAO_Object_Adapter::create_lock (int enable_locking,
return the_lock;
}
-
-void
-TAO_Object_Adapter::deactivate_i (CORBA::Boolean wait_for_completion,
- CORBA::Environment &ACE_TRY_ENV)
-{
- // If the ORB::shutdown operation is called, it makes a call on
- // deactivate with a TRUE etherealize_objects parameter for each POA
- // manager known in the process; the wait_for_completion parameter
- // to deactivate will be the same as the similarly named parameter
- // of ORB::shutdown.
-
- poa_manager_set::iterator end = this->poa_manager_set_.end ();
-
- for (poa_manager_set::iterator iterator = this->poa_manager_set_.begin ();
- iterator != end;
- ++iterator)
- {
- TAO_POA_Manager *poa_manager = *iterator;
- poa_manager->deactivate_i (1,
- wait_for_completion,
- ACE_TRY_ENV);
- ACE_CHECK;
- }
-}
-
void
TAO_Object_Adapter::dispatch_servant (const TAO_ObjectKey &key,
CORBA::ServerRequest &req,
diff --git a/TAO/tao/Object_Adapter.h b/TAO/tao/Object_Adapter.h
index dbe33564ea4..2f9e0f1737d 100644
--- a/TAO/tao/Object_Adapter.h
+++ b/TAO/tao/Object_Adapter.h
@@ -264,18 +264,8 @@ public:
static CORBA::ULong transient_poa_name_size (void);
- void deactivate (CORBA::Boolean wait_for_completion,
- CORBA::Environment &ACE_TRY_ENV);
-
- typedef ACE_Unbounded_Set<TAO_POA_Manager *> poa_manager_set;
-
- poa_manager_set poa_manager_set_;
-
protected:
- void deactivate_i (CORBA::Boolean wait_for_completion,
- CORBA::Environment &ACE_TRY_ENV);
-
int locate_servant_i (const TAO_ObjectKey &key,
CORBA_Environment &ACE_TRY_ENV);
diff --git a/TAO/tao/Object_Adapter.i b/TAO/tao/Object_Adapter.i
index 952c25ad506..2862b7d2d11 100644
--- a/TAO/tao/Object_Adapter.i
+++ b/TAO/tao/Object_Adapter.i
@@ -31,17 +31,6 @@ TAO_Object_Adapter::transient_poa_name_size ()
return TAO_Object_Adapter::transient_poa_name_size_;
}
-ACE_INLINE void
-TAO_Object_Adapter::deactivate (CORBA::Boolean wait_for_completion,
- CORBA::Environment &ACE_TRY_ENV)
-{
- // Lock access for the duration of this transaction.
- TAO_OBJECT_ADAPTER_GUARD;
-
- this->deactivate_i (wait_for_completion,
- ACE_TRY_ENV);
-}
-
ACE_INLINE int
TAO_Object_Adapter::locate_servant (const TAO_ObjectKey &key,
CORBA::Environment &ACE_TRY_ENV)
diff --git a/TAO/tao/POAManager.cpp b/TAO/tao/POAManager.cpp
index bc57280f7fe..f0930d1bbed 100644
--- a/TAO/tao/POAManager.cpp
+++ b/TAO/tao/POAManager.cpp
@@ -15,12 +15,10 @@ TAO_POA_Manager::TAO_POA_Manager (TAO_Object_Adapter &object_adapter)
poa_collection_ (),
object_adapter_ (object_adapter)
{
- this->object_adapter_.poa_manager_set_.insert (this);
}
TAO_POA_Manager::~TAO_POA_Manager (void)
{
- this->object_adapter_.poa_manager_set_.remove (this);
}
void
diff --git a/TAO/tests/Makefile b/TAO/tests/Makefile
index 89fac2d3184..ac568094b1a 100644
--- a/TAO/tests/Makefile
+++ b/TAO/tests/Makefile
@@ -23,6 +23,7 @@ DIRS = CDR \
IORManipulation \
Connection_Purging \
ORB_init \
+ ORB_destroy \
Nested_Event_Loop \
Leader_Followers \
Object_Loader \
diff --git a/TAO/tests/ORB_destroy/Makefile b/TAO/tests/ORB_destroy/Makefile
new file mode 100644
index 00000000000..0f43176f070
--- /dev/null
+++ b/TAO/tests/ORB_destroy/Makefile
@@ -0,0 +1,344 @@
+#
+# $Id$
+#
+
+ifndef TAO_ROOT
+TAO_ROOT = $(ACE_ROOT)/TAO
+endif
+
+BIN = ORB_destroy
+
+LSRC = $(addsuffix .cpp,$(BIN))
+
+CPPFLAGS += -I$(TAO_ROOT)
+
+LDLIBS = -lTAO
+LDFLAGS += -L$(TAO_ROOT)/tao
+
+INSTALL =
+
+#----------------------------------------------------------------------------
+# Include macros and targets
+#----------------------------------------------------------------------------
+
+include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU
+include $(ACE_ROOT)/include/makeinclude/macros.GNU
+include $(TAO_ROOT)/rules.tao.GNU
+include $(ACE_ROOT)/include/makeinclude/rules.common.GNU
+include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU
+include $(ACE_ROOT)/include/makeinclude/rules.bin.GNU
+include $(ACE_ROOT)/include/makeinclude/rules.local.GNU
+
+#----------------------------------------------------------------------------
+# Dependencies
+#----------------------------------------------------------------------------
+
+# DO NOT DELETE THIS LINE -- g++dep uses it.
+# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
+
+
+.obj/ORB_destroy.o .obj/ORB_destroy.so .shobj/ORB_destroy.o .shobj/ORB_destroy.so: ORB_destroy.cpp \
+ $(TAO_ROOT)/tao/corba.h \
+ $(ACE_ROOT)/ace/pre.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/post.h \
+ $(ACE_ROOT)/ace/ace_wchar.h \
+ $(ACE_ROOT)/ace/ACE_export.h \
+ $(ACE_ROOT)/ace/svc_export.h \
+ $(ACE_ROOT)/ace/OS_Dirent.h \
+ $(ACE_ROOT)/ace/OS_Export.h \
+ $(ACE_ROOT)/ace/OS_Dirent.inl \
+ $(ACE_ROOT)/ace/OS_String.h \
+ $(ACE_ROOT)/ace/OS_String.inl \
+ $(ACE_ROOT)/ace/OS_Memory.h \
+ $(ACE_ROOT)/ace/OS_Memory.inl \
+ $(ACE_ROOT)/ace/OS_TLI.h \
+ $(ACE_ROOT)/ace/OS_TLI.inl \
+ $(ACE_ROOT)/ace/Min_Max.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/OS.i \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(TAO_ROOT)/tao/corbafwd.h \
+ $(ACE_ROOT)/ace/CDR_Stream.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Based_Pointer_T.h \
+ $(ACE_ROOT)/ace/Based_Pointer_T.i \
+ $(ACE_ROOT)/ace/Based_Pointer_T.cpp \
+ $(ACE_ROOT)/ace/Based_Pointer_Repository.h \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/CDR_Stream.i \
+ $(TAO_ROOT)/tao/try_macros.h \
+ $(TAO_ROOT)/tao/orbconf.h \
+ $(ACE_ROOT)/ace/CORBA_macros.h \
+ $(TAO_ROOT)/tao/varbase.h \
+ $(TAO_ROOT)/tao/corbafwd.i \
+ $(TAO_ROOT)/tao/Environment.h \
+ $(TAO_ROOT)/tao/Environment.i \
+ $(TAO_ROOT)/tao/ORB.h \
+ $(TAO_ROOT)/tao/Exception.h \
+ $(TAO_ROOT)/tao/Exception.i \
+ $(TAO_ROOT)/tao/IOR_LookupTable.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/Functor.h \
+ $(ACE_ROOT)/ace/Functor.i \
+ $(ACE_ROOT)/ace/Functor_T.h \
+ $(ACE_ROOT)/ace/Functor_T.i \
+ $(ACE_ROOT)/ace/Functor_T.cpp \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ $(TAO_ROOT)/tao/Services.h \
+ $(TAO_ROOT)/tao/Sequence.h \
+ $(TAO_ROOT)/tao/Managed_Types.h \
+ $(TAO_ROOT)/tao/Managed_Types.i \
+ $(TAO_ROOT)/tao/Sequence.i \
+ $(TAO_ROOT)/tao/Sequence_T.h \
+ $(TAO_ROOT)/tao/Sequence_T.i \
+ $(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/Services.i \
+ $(TAO_ROOT)/tao/IORManipulation.h \
+ $(TAO_ROOT)/tao/LocalObject.h \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/LocalObject.i \
+ $(TAO_ROOT)/tao/IORC.h \
+ $(TAO_ROOT)/tao/IORC.i \
+ $(TAO_ROOT)/tao/Interceptor.h \
+ $(TAO_ROOT)/tao/InterceptorC.h \
+ $(TAO_ROOT)/tao/IOPC.h \
+ $(TAO_ROOT)/tao/CDR.h \
+ $(TAO_ROOT)/tao/CDR.i \
+ $(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/InterceptorC.i \
+ $(TAO_ROOT)/tao/Interceptor.i \
+ $(TAO_ROOT)/tao/PolicyC.h \
+ $(TAO_ROOT)/tao/CurrentC.h \
+ $(TAO_ROOT)/tao/CurrentC.i \
+ $(TAO_ROOT)/tao/Encodable.h \
+ $(TAO_ROOT)/tao/Typecode.h \
+ $(TAO_ROOT)/tao/Typecode.i \
+ $(TAO_ROOT)/tao/PolicyC.i \
+ $(TAO_ROOT)/tao/ORB.i \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/Any.i \
+ $(TAO_ROOT)/tao/NVList.h \
+ $(TAO_ROOT)/tao/NVList.i \
+ $(TAO_ROOT)/tao/Principal.h \
+ $(TAO_ROOT)/tao/Principal.i \
+ $(TAO_ROOT)/tao/Request.h \
+ $(TAO_ROOT)/tao/Context.h \
+ $(TAO_ROOT)/tao/Context.i \
+ $(TAO_ROOT)/tao/MessagingC.h \
+ $(TAO_ROOT)/tao/ValueBase.h \
+ $(TAO_ROOT)/tao/ValueBase.i \
+ $(TAO_ROOT)/tao/ValueFactory.h \
+ $(TAO_ROOT)/tao/ValueFactory.i \
+ $(TAO_ROOT)/tao/TimeBaseC.h \
+ $(TAO_ROOT)/tao/TimeBaseC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
+ $(TAO_ROOT)/tao/PollableC.i \
+ $(TAO_ROOT)/tao/MessagingC.i \
+ $(TAO_ROOT)/tao/Request.i \
+ $(TAO_ROOT)/tao/Server_Request.h \
+ $(TAO_ROOT)/tao/Object_KeyC.h \
+ $(TAO_ROOT)/tao/Object_KeyC.i \
+ $(TAO_ROOT)/tao/Server_Request.i \
+ $(TAO_ROOT)/tao/POA.h \
+ $(TAO_ROOT)/tao/Object_Adapter.h \
+ $(TAO_ROOT)/tao/Key_Adapters.h \
+ $(ACE_ROOT)/ace/Map.h \
+ $(ACE_ROOT)/ace/Map_T.h \
+ $(ACE_ROOT)/ace/Pair.h \
+ $(ACE_ROOT)/ace/Pair_T.h \
+ $(ACE_ROOT)/ace/Pair_T.i \
+ $(ACE_ROOT)/ace/Pair_T.cpp \
+ $(ACE_ROOT)/ace/Map_Manager.h \
+ $(ACE_ROOT)/ace/Map_Manager.i \
+ $(ACE_ROOT)/ace/Map_Manager.cpp \
+ $(ACE_ROOT)/ace/Active_Map_Manager.h \
+ $(ACE_ROOT)/ace/Active_Map_Manager.i \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.h \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.i \
+ $(ACE_ROOT)/ace/Active_Map_Manager_T.cpp \
+ $(ACE_ROOT)/ace/Map_T.i \
+ $(ACE_ROOT)/ace/Map_T.cpp \
+ $(TAO_ROOT)/tao/PortableServerC.h \
+ $(TAO_ROOT)/tao/PortableServerC.i \
+ $(TAO_ROOT)/tao/Key_Adapters.i \
+ $(TAO_ROOT)/tao/Server_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/poa_macros.h \
+ $(TAO_ROOT)/tao/Servant_Base.h \
+ $(TAO_ROOT)/tao/Servant_Base.i \
+ $(TAO_ROOT)/tao/Active_Object_Map.h \
+ $(TAO_ROOT)/tao/Active_Object_Map.i \
+ $(TAO_ROOT)/tao/RTCORBAC.h \
+ $(TAO_ROOT)/tao/RTCORBAC.i \
+ $(TAO_ROOT)/tao/Object_Adapter.i \
+ $(TAO_ROOT)/tao/POAManager.h \
+ $(TAO_ROOT)/tao/POAManager.i \
+ $(TAO_ROOT)/tao/POA.i \
+ $(TAO_ROOT)/tao/Stub.h \
+ $(TAO_ROOT)/tao/Pluggable.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.i \
+ $(ACE_ROOT)/ace/Message_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ $(TAO_ROOT)/tao/Pluggable.i \
+ $(TAO_ROOT)/tao/MProfile.h \
+ $(TAO_ROOT)/tao/Profile.h \
+ $(TAO_ROOT)/tao/Tagged_Components.h \
+ $(TAO_ROOT)/tao/CONV_FRAMEC.h \
+ $(TAO_ROOT)/tao/CONV_FRAMEC.i \
+ $(TAO_ROOT)/tao/Tagged_Components.i \
+ $(TAO_ROOT)/tao/Profile.i \
+ $(TAO_ROOT)/tao/MProfile.i \
+ $(TAO_ROOT)/tao/Stub.i \
+ $(TAO_ROOT)/tao/params.h \
+ $(TAO_ROOT)/tao/params.i \
+ $(TAO_ROOT)/tao/ORB_Core.h \
+ $(TAO_ROOT)/tao/Policy_Manager.h \
+ $(TAO_ROOT)/tao/POA_CORBA.h \
+ $(TAO_ROOT)/tao/DynAnyC.h \
+ $(TAO_ROOT)/tao/DynAnyC.i \
+ $(TAO_ROOT)/tao/DomainC.h \
+ $(TAO_ROOT)/tao/DomainC.i \
+ $(TAO_ROOT)/tao/Policy_Manager.i \
+ $(TAO_ROOT)/tao/Resource_Factory.h \
+ $(TAO_ROOT)/tao/Protocol_Factory.h \
+ $(TAO_ROOT)/tao/ORB_Core.i \
+ $(ACE_ROOT)/ace/Dynamic_Service.h \
+ $(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ $(TAO_ROOT)/tao/Operation_Table.h \
+ $(TAO_ROOT)/tao/debug.h \
+ $(TAO_ROOT)/tao/Client_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/Invocation.h \
+ $(TAO_ROOT)/tao/Synch_Reply_Dispatcher.h \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.h \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.i \
+ $(TAO_ROOT)/tao/GIOP_Message_State.h \
+ $(TAO_ROOT)/tao/Pluggable_Messaging.h \
+ $(TAO_ROOT)/tao/Pluggable_Messaging_Utils.h \
+ $(TAO_ROOT)/tao/Pluggable_Messaging_Utils.i \
+ $(TAO_ROOT)/tao/Pluggable_Messaging.i \
+ $(TAO_ROOT)/tao/GIOP_Message_State.i \
+ $(TAO_ROOT)/tao/Synch_Reply_Dispatcher.i \
+ $(TAO_ROOT)/tao/TAOC.h \
+ $(TAO_ROOT)/tao/Priority_Mapping_Manager.h \
+ $(TAO_ROOT)/tao/Priority_Mapping.h \
+ $(TAO_ROOT)/tao/Priority_Mapping.i \
+ $(TAO_ROOT)/tao/Priority_Mapping_Manager.i \
+ $(TAO_ROOT)/tao/TAOC.i \
+ $(TAO_ROOT)/tao/operation_details.h \
+ $(TAO_ROOT)/tao/target_specification.h \
+ $(TAO_ROOT)/tao/target_specification.i \
+ $(TAO_ROOT)/tao/operation_details.i \
+ $(TAO_ROOT)/tao/Invocation.i \
+ $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \
+ $(TAO_ROOT)/tao/DynAny_i.h \
+ $(TAO_ROOT)/tao/ObjectIDList.h \
+ $(TAO_ROOT)/tao/ObjectIDList.i \
+ $(TAO_ROOT)/tao/WrongTransactionC.h \
+ $(TAO_ROOT)/tao/InterfaceC.h \
+ $(TAO_ROOT)/tao/ifrfwd.h \
+ $(TAO_ROOT)/tao/BoundsC.h \
+ $(TAO_ROOT)/tao/BoundsC.i \
+ $(TAO_ROOT)/tao/MessagingS.h \
+ $(TAO_ROOT)/tao/TimeBaseS.h \
+ $(TAO_ROOT)/tao/TimeBaseS_T.h \
+ $(TAO_ROOT)/tao/TimeBaseS_T.i \
+ $(TAO_ROOT)/tao/TimeBaseS_T.cpp \
+ $(TAO_ROOT)/tao/TimeBaseS.i \
+ $(TAO_ROOT)/tao/MessagingS_T.h \
+ $(TAO_ROOT)/tao/MessagingS_T.i \
+ $(TAO_ROOT)/tao/MessagingS_T.cpp \
+ $(TAO_ROOT)/tao/MessagingS.i
+
+# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
diff --git a/TAO/tests/ORB_destroy/ORB_destroy.cpp b/TAO/tests/ORB_destroy/ORB_destroy.cpp
new file mode 100644
index 00000000000..fe1189f9103
--- /dev/null
+++ b/TAO/tests/ORB_destroy/ORB_destroy.cpp
@@ -0,0 +1,201 @@
+// $Id$
+
+//========================================================================
+//
+// = LIBRARY
+// TAO/tests/ORB_destroy
+//
+// = FILENAME
+// ORB_destroy.cpp
+//
+// = DESCRIPTION
+// Simple ORB destruction test.
+//
+// = AUTHOR
+// Irfan Pyarali
+//
+//=========================================================================
+
+#include "tao/corba.h"
+
+ACE_RCSID(ORB_destroy, ORB_destroy, "$Id$")
+
+int
+test_with_regular_poa_manager (int argc,
+ char **argv,
+ const char *orb_name,
+ int destroy_orb,
+ int destroy_poa)
+{
+ ACE_DECLARE_NEW_CORBA_ENV;
+
+ ACE_TRY
+ {
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc, argv, orb_name, ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ CORBA::Object_var obj =
+ orb->resolve_initial_references ("RootPOA",
+ ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ PortableServer::POA_var root_poa =
+ PortableServer::POA::_narrow (obj.in (), ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ PortableServer::POAManager_var poa_manager =
+ root_poa->the_POAManager (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ poa_manager->activate (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ if (destroy_poa)
+ {
+ root_poa->destroy (1, 1, ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ }
+
+ if (destroy_orb)
+ {
+ orb->destroy (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ }
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "Exception raised");
+ ACE_CHECK_RETURN (-1);
+ }
+ ACE_ENDTRY;
+
+ return 0;
+}
+
+int
+test_with_funky_poa_manager (int argc,
+ char **argv,
+ const char *orb_name,
+ int destroy_orb,
+ int destroy_poa,
+ int funky_poa_manager)
+{
+ ACE_DECLARE_NEW_CORBA_ENV;
+
+ ACE_TRY
+ {
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc, argv, orb_name, ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ CORBA::Object_var obj =
+ orb->resolve_initial_references ("RootPOA",
+ ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ PortableServer::POA_var root_poa =
+ PortableServer::POA::_narrow (obj.in (), ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ if (funky_poa_manager)
+ {
+ PortableServer::POAManager_var poa_manager =
+ root_poa->the_POAManager (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ poa_manager->activate (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ }
+
+ if (destroy_poa)
+ {
+ root_poa->destroy (1, 1, ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ }
+
+ if (destroy_orb)
+ {
+ orb->destroy (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ }
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "Exception raised");
+ ACE_CHECK_RETURN (-1);
+ }
+ ACE_ENDTRY;
+
+ return 0;
+}
+
+int
+main (int argc, char **argv)
+{
+ int result = 0;
+
+ result = test_with_regular_poa_manager (argc, argv,
+ "destroy_nothing_with_poa_manager",
+ 0, 0);
+ ACE_ASSERT (result == 0);
+
+ result = test_with_regular_poa_manager (argc, argv,
+ "destroy_poa_with_poa_manager",
+ 0, 1);
+ ACE_ASSERT (result == 0);
+
+ result = test_with_regular_poa_manager (argc, argv,
+ "destroy_orb_with_poa_manager",
+ 1, 0);
+ ACE_ASSERT (result == 0);
+
+ result = test_with_regular_poa_manager (argc, argv,
+ "destroy_poa_and_orb_with_poa_manager",
+ 1, 1);
+ ACE_ASSERT (result == 0);
+
+ result = test_with_funky_poa_manager (argc, argv,
+ "destroy_nothing_without_poa_manager",
+ 0, 0, 0);
+ ACE_ASSERT (result == 0);
+
+ result = test_with_funky_poa_manager (argc, argv,
+ "destroy_poa_without_poa_manager",
+ 0, 1, 0);
+ ACE_ASSERT (result == 0);
+
+ result = test_with_funky_poa_manager (argc, argv,
+ "destroy_orb_without_poa_manager",
+ 1, 0, 0);
+ ACE_ASSERT (result == 0);
+
+ result = test_with_funky_poa_manager (argc, argv,
+ "destroy_poa_and_orb_without_poa_manager",
+ 1, 1, 0);
+ ACE_ASSERT (result == 0);
+
+ result = test_with_funky_poa_manager (argc, argv,
+ "destroy_nothing_with_funky_poa_manager",
+ 0, 0, 1);
+ ACE_ASSERT (result == 0);
+
+ result = test_with_funky_poa_manager (argc, argv,
+ "destroy_poa_with_funky_poa_manager",
+ 0, 1, 1);
+ ACE_ASSERT (result == 0);
+
+ result = test_with_funky_poa_manager (argc, argv,
+ "destroy_orb_with_funky_poa_manager",
+ 1, 0, 1);
+ ACE_ASSERT (result == 0);
+
+ result = test_with_funky_poa_manager (argc, argv,
+ "destroy_poa_and_orb_with_funky_poa_manager",
+ 1, 1, 1);
+ ACE_ASSERT (result == 0);
+
+ return 0;
+}
diff --git a/TAO/tests/ORB_destroy/ORB_destroy.dsp b/TAO/tests/ORB_destroy/ORB_destroy.dsp
new file mode 100644
index 00000000000..5c284120a07
--- /dev/null
+++ b/TAO/tests/ORB_destroy/ORB_destroy.dsp
@@ -0,0 +1,99 @@
+# Microsoft Developer Studio Project File - Name="ORB_destroy" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=ORB_destroy - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "ORB_destroy.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "ORB_destroy.mak" CFG="ORB_destroy - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "ORB_destroy - Win32 Release" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE "ORB_destroy - Win32 Debug" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "ORB_destroy - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir ""
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /I "..\..\.." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 ace.lib tao.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\tao" /libpath:"..\..\..\ace"
+# SUBTRACT LINK32 /pdb:none
+
+!ELSEIF "$(CFG)" == "ORB_destroy - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ""
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /I "..\..\.." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 TAOd.lib aced.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\tao" /libpath:"..\..\..\ace"
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "ORB_destroy - Win32 Release"
+# Name "ORB_destroy - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\ORB_destroy.cpp
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/TAO/tests/ORB_destroy/ORB_destroy.dsw b/TAO/tests/ORB_destroy/ORB_destroy.dsw
new file mode 100644
index 00000000000..9ec0fb31585
--- /dev/null
+++ b/TAO/tests/ORB_destroy/ORB_destroy.dsw
@@ -0,0 +1,29 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "ORB_destroy"=.\ORB_destroy.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/TAO/tests/ORB_destroy/README b/TAO/tests/ORB_destroy/README
new file mode 100644
index 00000000000..3109f93ebf3
--- /dev/null
+++ b/TAO/tests/ORB_destroy/README
@@ -0,0 +1 @@
+Simple ORB destruction test. \ No newline at end of file
diff --git a/TAO/tests/ORB_destroy/run_test.pl b/TAO/tests/ORB_destroy/run_test.pl
new file mode 100755
index 00000000000..9ae4b5d362e
--- /dev/null
+++ b/TAO/tests/ORB_destroy/run_test.pl
@@ -0,0 +1,24 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+unshift @INC, '../../../../bin';
+require Process;
+require ACEutils;
+
+$T = Process::Create ($EXEPREFIX."ORB_destroy".$EXE_EXT);
+
+$client = $T->TimedWait (60);
+if ($client == -1) {
+ print STDERR "ERROR: test timedout\n";
+ $T->Kill (); $T->TimedWait (1);
+}
+
+if ($client == -1) {
+ exit 1;
+}
+
+exit 0;
diff --git a/TAO/tests/TAO_Tests.dsw b/TAO/tests/TAO_Tests.dsw
index 11fe6b9669d..51fc1bc42b4 100644
--- a/TAO/tests/TAO_Tests.dsw
+++ b/TAO/tests/TAO_Tests.dsw
@@ -75,6 +75,30 @@ Package=<4>
###############################################################################
+Project: "ORB_init"=.\ORB_init\ORB_init.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "ORB_destroy"=.\ORB_destroy\ORB_destroy.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
Project: "MT_Client Client"=.\MT_Client\client.dsp - Package Owner=<4>
Package=<5>
diff --git a/TAO/version_tests.dsw b/TAO/version_tests.dsw
index 54a12b4ecd7..ee84407398f 100644
--- a/TAO/version_tests.dsw
+++ b/TAO/version_tests.dsw
@@ -1920,6 +1920,21 @@ Package=<4>
###############################################################################
+Project: "ORB_destroy"=.\tests\ORB_destroy\ORB_destroy.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name TAO DLL
+ End Project Dependency
+}}}
+
+###############################################################################
+
Project: "POA Deactivation"=.\tests\POA\Deactivation\Deactivation.dsp - Package Owner=<4>
Package=<5>
diff --git a/bin/auto_compile_win32.pl b/bin/auto_compile_win32.pl
index 60fbe93f23d..f9709a7a6fd 100755
--- a/bin/auto_compile_win32.pl
+++ b/bin/auto_compile_win32.pl
@@ -234,6 +234,7 @@ TAO/tests/POA/Identity/Identity.dsw, POA Identity:
TAO/tests/IORManipulation/IORManipulation.dsw, IORTest:
TAO/tests/Connection_Purging/Connection_Purging.dsw, POA Connection Purging:
TAO/tests/ORB_init/ORB_init.dsw, ORB_init:
+TAO/tests/ORB_destroy/ORB_destroy.dsw, ORB_destroy:
TAO/tests/Nested_Event_Loop/Nested_Event_Loop.dsw, Nested_Event_Loop Server:
TAO/tests/Nested_Event_Loop/Nested_Event_Loop.dsw, Nested_Event_Loop Client:
TAO/tests/Leader_Followers/Leader_Followers.dsw, Leader_Followers Server:
@@ -455,6 +456,7 @@ TAO/tests/POA/Identity/Identity.dsw, POA Identity:
TAO/tests/IORManipulation/IORManipulation.dsw, IORTest:
TAO/tests/Connection_Purging/Connection_Purging.dsw, POA Connection Purging:
TAO/tests/ORB_init/ORB_init.dsw, ORB_init:
+TAO/tests/ORB_destroy/ORB_destroy.dsw, ORB_destroy:
TAO/tests/Nested_Event_Loop/Nested_Event_Loop.dsw, Nested_Event_Loop Server:
TAO/tests/Nested_Event_Loop/Nested_Event_Loop.dsw, Nested_Event_Loop Client:
TAO/tests/Leader_Followers/Leader_Followers.dsw, Leader_Followers Server:
diff --git a/bin/auto_run_tests.lst b/bin/auto_run_tests.lst
index a77f0adcc11..c4857984bec 100644
--- a/bin/auto_run_tests.lst
+++ b/bin/auto_run_tests.lst
@@ -38,6 +38,7 @@ TAO/tests/Timeout/run_test.pl: MINIMUM
TAO/tests/Timed_Buffered_Oneways/run_test.pl: MINIMUM
TAO/tests/IDL_Test/run_test.pl
TAO/tests/ORB_init/run_test.pl
+TAO/tests/ORB_destroy/run_test.pl
TAO/tests/DSI_Gateway/run_test.pl: MINIMUM
TAO/tests/DynAny_Test/run_test.pl: MINIMUM
TAO/tests/Connection_Purging/run_test.pl: ST
diff --git a/bin/run_all_list.pm b/bin/run_all_list.pm
index 7d4108e5b49..e23c5f6bdb7 100644
--- a/bin/run_all_list.pm
+++ b/bin/run_all_list.pm
@@ -38,6 +38,7 @@ if ($^O eq "MSWin32") {
'TAO/tests/Timed_Buffered_Oneways , run_test.pl',
'TAO/tests/IDL_Test , run_test.pl',
'TAO/tests/ORB_init , run_test.pl',
+ 'TAO/tests/ORB_destroy , run_test.pl',
'TAO/tests/DSI_Gateway , run_test.pl',
'TAO/tests/DynAny_Test , run_test.pl',
'TAO/tests/Connection_Purging , run_test.pl',
@@ -110,6 +111,7 @@ if ($^O eq "MSWin32") {
# NOT MINIMUM 'TAO/tests/Timed_Buffered_Oneways , run_test.pl',
'TAO/tests/IDL_Test , run_test.pl',
'TAO/tests/ORB_init , run_test.pl',
+ 'TAO/tests/ORB_destroy , run_test.pl',
# NOT MINIMUM 'TAO/tests/DSI_Gateway , run_test.pl',
# NOT MINIMUM 'TAO/tests/DynAny_Test , run_test.pl',
'TAO/tests/Connection_Purging , run_test.pl',
@@ -180,6 +182,7 @@ if ($^O eq "MSWin32") {
'TAO/tests/Timeout , run_test.pl',
'TAO/tests/Timed_Buffered_Oneways , run_test.pl',
'TAO/tests/ORB_init , run_test.pl',
+ 'TAO/tests/ORB_destroy , run_test.pl',
'TAO/tests/DSI_Gateway , run_test.pl',
'TAO/tests/DynAny_Test , run_test.pl',
# NOT ST 'TAO/tests/Connection_Purging , run_test.pl',
@@ -250,6 +253,7 @@ if ($^O eq "MSWin32") {
'TAO/tests/Timed_Buffered_Oneways , run_test.pl',
'TAO/tests/IDL_Test , run_test.pl',
'TAO/tests/ORB_init , run_test.pl',
+ 'TAO/tests/ORB_destroy , run_test.pl',
'TAO/tests/DSI_Gateway , run_test.pl',
'TAO/tests/AMI , run_test.pl',
'TAO/tests/InterOp-Naming , run_test.pl',