diff options
author | elliott_c <elliott_c@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2005-12-22 14:54:51 +0000 |
---|---|---|
committer | elliott_c <elliott_c@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2005-12-22 14:54:51 +0000 |
commit | 64eaebceb32fd85d4a49edcd7fd87aa717e0b842 (patch) | |
tree | fc6af8395f38530adade43b8c51065c302328602 /TAO/tests/Portable_Interceptors/Processing_Mode_Policy/Remote/client_main.cpp | |
parent | db305c92235da8407e44056618396f49fba9c7df (diff) | |
download | ATCD-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.cpp | 136 |
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; +} |