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.cpp53
1 files changed, 53 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..8829cc5cb9d
--- /dev/null
+++ b/TAO/tests/Portable_Interceptors/Recursive_ORBInitializer/client.cpp
@@ -0,0 +1,53 @@
+// $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;
+
+ try
+ {
+ PortableInterceptor::register_orb_initializer (initializer_var1.in ());
+
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc, argv);
+
+ CORBA::ORB_var orb2 =
+ CORBA::ORB_init (argc, argv, "SecondORB");
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Caught exception in client:");
+ return 1;
+ }
+
+ // 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;
+}