summaryrefslogtreecommitdiff
path: root/TAO/tests/Portable_Interceptors/Processing_Mode_Policy/Remote/client_main.cpp
diff options
context:
space:
mode:
authorelliott_c <elliott_c@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2005-12-22 14:54:51 +0000
committerelliott_c <elliott_c@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2005-12-22 14:54:51 +0000
commit64eaebceb32fd85d4a49edcd7fd87aa717e0b842 (patch)
treefc6af8395f38530adade43b8c51065c302328602 /TAO/tests/Portable_Interceptors/Processing_Mode_Policy/Remote/client_main.cpp
parentdb305c92235da8407e44056618396f49fba9c7df (diff)
downloadATCD-64eaebceb32fd85d4a49edcd7fd87aa717e0b842.tar.gz
ChangeLogTag: Thu Dec 22 08:54:09 2005 Chad Elliott <elliott_c@ociweb.com>
Diffstat (limited to 'TAO/tests/Portable_Interceptors/Processing_Mode_Policy/Remote/client_main.cpp')
-rw-r--r--TAO/tests/Portable_Interceptors/Processing_Mode_Policy/Remote/client_main.cpp136
1 files changed, 136 insertions, 0 deletions
diff --git a/TAO/tests/Portable_Interceptors/Processing_Mode_Policy/Remote/client_main.cpp b/TAO/tests/Portable_Interceptors/Processing_Mode_Policy/Remote/client_main.cpp
new file mode 100644
index 00000000000..78a62bdf25e
--- /dev/null
+++ b/TAO/tests/Portable_Interceptors/Processing_Mode_Policy/Remote/client_main.cpp
@@ -0,0 +1,136 @@
+//$Id$
+#include "Client_Task.h"
+#include "ace/Get_Opt.h"
+#include "ace/Argv_Type_Converter.h"
+#include "ace/SString.h"
+#include "ace/Manual_Event.h"
+#include "Echo_Client_ORBInitializer.h"
+#include "tao/ORBInitializer_Registry.h"
+#include "client_interceptor.h"
+
+const char *input = "file://test.ior";
+
+ACE_CString proc_mode_str;
+
+int
+parse_args (int argc, char *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, "p:k:");
+ int c;
+
+ proc_mode_str.set ("LOCAL_AND_REMOTE");
+
+ while ((c = get_opts ()) != -1)
+ {
+ switch (c)
+ {
+ case 'p':
+ proc_mode_str.set (get_opts.opt_arg ());
+ break;
+ case 'k':
+ input = get_opts.opt_arg ();
+ break;
+ case '?':
+ default:
+ return 0;
+ }
+ }
+ // Indicates sucessful parsing of the command line
+ return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+ if (parse_args (argc,
+ argv) == -1)
+ return -1;
+
+ ACE_DECLARE_NEW_CORBA_ENV;
+ ACE_TRY
+ {
+ PortableInterceptor::ORBInitializer_ptr temp_initializer =
+ PortableInterceptor::ORBInitializer::_nil ();
+
+ // Set up our default expectations.
+ CORBA::ULong expected_interceptor_check = 12;
+
+ PortableInterceptor::ProcessingMode proc_mode =
+ PortableInterceptor::LOCAL_AND_REMOTE;
+
+ if (proc_mode_str == "LOCAL_ONLY")
+ {
+ proc_mode = PortableInterceptor::LOCAL_ONLY;
+ ACE_DEBUG((LM_DEBUG,
+ "Using LOCAL_ONLY for client-side ProcessingMode.\n"));
+
+ // Since all of the calls are remote, setting the client-side
+ // ProcessingMode to LOCAL_ONLY will cause the client request
+ // interceptor to not fire. Thus, we expect 0 calls on the
+ // client interceptor.
+ expected_interceptor_check = 0;
+ }
+ else if (proc_mode_str == "REMOTE_ONLY")
+ {
+ proc_mode = PortableInterceptor::REMOTE_ONLY;
+ ACE_DEBUG((LM_DEBUG,
+ "Using REMOTE_ONLY for client-side ProcessingMode.\n"));
+ }
+ else
+ {
+ ACE_DEBUG((LM_DEBUG,
+ "Using LOCAL_AND_REMOTE for client-side ProcessingMode.\n"));
+ }
+
+ ACE_NEW_RETURN (temp_initializer,
+ Echo_Client_ORBInitializer (proc_mode),
+ -1); // No exceptions yet!
+ PortableInterceptor::ORBInitializer_var orb_initializer =
+ temp_initializer;
+
+ PortableInterceptor::register_orb_initializer (orb_initializer.in ()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ ACE_Argv_Type_Converter atc (argc, argv);
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (atc.get_argc (),
+ atc.get_TCHAR_argv (),
+ ""
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ Client_Task client_task (input,
+ orb.in (),
+ ACE_Thread_Manager::instance ());
+
+ if (client_task.activate (THR_NEW_LWP | THR_JOINABLE,
+ 1,
+ 1) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, "Error activating client task\n"));
+ }
+
+ ACE_Thread_Manager::instance ()->wait ();
+
+ CORBA::ULong number_called =
+ Echo_Client_Request_Interceptor::client_interceptor_check_;
+
+ if (number_called != expected_interceptor_check)
+ {
+ ACE_ERROR ((LM_ERROR,
+ "(%P|%t) ERROR:Client-Side Interceptors not called "
+ "properly, called %d times, expected %d.\n",
+ number_called, expected_interceptor_check));
+ return 1;
+ }
+ }
+ ACE_CATCHANY
+ {
+ ACE_ERROR ((LM_ERROR,
+ "(%P|%t) ERROR: Some exception was caught in main().\n"));
+ return 1;
+ }
+ ACE_ENDTRY;
+ return 0;
+}