summaryrefslogtreecommitdiff
path: root/TAO/tests/Portable_Interceptors/Recursive_ORBInitializer/client.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tests/Portable_Interceptors/Recursive_ORBInitializer/client.cpp')
-rw-r--r--TAO/tests/Portable_Interceptors/Recursive_ORBInitializer/client.cpp59
1 files changed, 59 insertions, 0 deletions
diff --git a/TAO/tests/Portable_Interceptors/Recursive_ORBInitializer/client.cpp b/TAO/tests/Portable_Interceptors/Recursive_ORBInitializer/client.cpp
new file mode 100644
index 00000000000..9f716e09ada
--- /dev/null
+++ b/TAO/tests/Portable_Interceptors/Recursive_ORBInitializer/client.cpp
@@ -0,0 +1,59 @@
+// $Id$
+
+#include "Client_ORBInitializer.h"
+#include "tao/ORBInitializer_Registry.h"
+
+ACE_RCSID(Recursive_ORBInitializer,
+ client,
+ "$Id$")
+
+int
+main (int argc, char *argv[])
+{
+ Client_ORBInitializer* initializer1 = 0;
+ Client_ORBInitializer* initializer2 = 0;
+
+ ACE_NEW_RETURN (initializer2,
+ Client_ORBInitializer (0),
+ -1); // No exceptions yet!
+
+ ACE_NEW_RETURN (initializer1,
+ Client_ORBInitializer (initializer2),
+ -1); // No exceptions yet!
+
+ PortableInterceptor::ORBInitializer_var initializer_var1 =
+ initializer1;
+
+ PortableInterceptor::ORBInitializer_var initializer_var2 =
+ initializer2;
+
+ ACE_TRY_NEW_ENV
+ {
+ PortableInterceptor::register_orb_initializer (initializer_var1.in ()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ CORBA::ORB_var orb2 =
+ CORBA::ORB_init (argc, argv, "SecondORB" ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "Caught exception in client:");
+ return 1;
+ }
+ ACE_ENDTRY;
+
+ // The first ORBInitializer should be called twice, the second only once
+ ACE_ASSERT (initializer1->pre_init_called == 2);
+ ACE_ASSERT (initializer2->pre_init_called == 1);
+ ACE_ASSERT (initializer1->post_init_called == 2);
+ ACE_ASSERT (initializer2->post_init_called == 1);
+
+ return 0;
+}