summaryrefslogtreecommitdiff
path: root/TAO/examples/POA/Forwarding/client.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/examples/POA/Forwarding/client.cpp')
-rw-r--r--TAO/examples/POA/Forwarding/client.cpp116
1 files changed, 62 insertions, 54 deletions
diff --git a/TAO/examples/POA/Forwarding/client.cpp b/TAO/examples/POA/Forwarding/client.cpp
index b77c7f2b645..94bf8b5ffa1 100644
--- a/TAO/examples/POA/Forwarding/client.cpp
+++ b/TAO/examples/POA/Forwarding/client.cpp
@@ -33,20 +33,18 @@ read_ior (char *filename)
{
// Open the file for reading.
ACE_HANDLE f_handle_ = ACE_OS::open (filename,0);
-
+
if (f_handle_ == ACE_INVALID_HANDLE)
ACE_ERROR_RETURN ((LM_ERROR,
"Unable to open %s for reading: %p\n",
- filename,
- "ACE_OS::open"),
+ filename),
-1);
ACE_Read_Buffer ior_buffer (f_handle_);
server_IOR_ = ior_buffer.read ();
-
+
if (server_IOR_ == 0)
ACE_ERROR_RETURN ((LM_ERROR,
- "Unable to allocate memory to read ior: %p\n",
- "ACE_Read_Buffer::read"),
+ "Unable to allocate memory to read ior: %p\n"),
-1);
return 0;
}
@@ -66,8 +64,7 @@ parse_args (int argc, char **argv)
if (result < 0)
ACE_ERROR_RETURN ((LM_ERROR,
"Unable to read ior from %s : %p\n",
- get_opts.optarg,
- "read_ior"),
+ get_opts.optarg),
-1);
break;
case 'k':
@@ -85,81 +82,92 @@ parse_args (int argc, char **argv)
argv [0]),
-1);
}
-
+
if (server_IOR_ == 0)
ACE_ERROR_RETURN ((LM_ERROR,
"Please specify the IOR for the servant\n"), -1);
-
+
// Indicates successful parsing of command line.
return 0;
}
-void
-do_calls (Foo_ptr foo_ptr,
- CORBA::Environment &ACE_TRY_ENV)
+int do_calls (Foo_ptr foo_ptr)
{
+ // CORBA::Environment env;
+ ACE_DECLARE_NEW_CORBA_ENV;
+
+ CORBA::Long result = 0;
+
for (int i = 1; i <= iterations; i++)
{
// About half way through
if (i % 3 == 0)
{
foo_ptr->forward (ACE_TRY_ENV);
- ACE_CHECK;
+ ACE_CHECK_RETURN (-1);
}
else
{
// Invoke the doit() method of the foo reference.
- CORBA::Long result = foo_ptr->doit (ACE_TRY_ENV);
- ACE_CHECK;
-
- // Print the result of doit () method of the foo reference.
- ACE_DEBUG ((LM_DEBUG,
- "doit() returned %d \n",
- result));
+ result = foo_ptr->doit (ACE_TRY_ENV);
+ // If exception
+ if (ACE_TRY_ENV.exception () != 0)
+ {
+ ACE_TRY_ENV.print_exception ("calling doit");
+ }
+ else
+ // Print the result of doit () method of the foo
+ // reference.
+ ACE_DEBUG ((LM_DEBUG,
+ "doit() returned %d \n",
+ result));
}
}
+
+ // In case you want to shutdown your server
+ // foo_ptr->shutdown (env);
+ // If exception
+ // if (env.exception () != 0)
+ // {
+ // env.print_exception ("calling shutdown");
+ // }
+ return 0;
}
int
main (int argc, char **argv)
{
+ // @@ Michael, this function is too long. Can you please break it
+ // up into multiple smaller functions.
+ //CORBA::Environment env;
ACE_DECLARE_NEW_CORBA_ENV;
- ACE_TRY
- {
- // Initialize the ORB
- CORBA::ORB_var orb = CORBA::ORB_init (argc, argv, 0, ACE_TRY_ENV);
- ACE_TRY_CHECK;
-
- // Initialize options based on command-line arguments.
- int parse_args_result = parse_args (argc, argv);
- if (parse_args_result != 0)
- return parse_args_result;
-
- // Get an object reference from the argument string.
- CORBA::Object_var object = orb->string_to_object (server_IOR_, ACE_TRY_ENV);
- ACE_TRY_CHECK;
-
- // Try to narrow the object reference to a Foo reference.
- Foo_var foo_var = Foo::_narrow (object.in (), ACE_TRY_ENV);
- ACE_TRY_CHECK;
-
- CORBA::String_var original_location =
- orb->object_to_string (foo_var.in (), ACE_TRY_ENV);
- ACE_TRY_CHECK;
-
- do_calls (foo_var.in (),
- ACE_TRY_ENV);
- ACE_TRY_CHECK;
- }
- ACE_CATCHANY
- {
- ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Exception caught");
- return -1;
- }
- ACE_ENDTRY;
+ // Initialize the ORB
+ CORBA::ORB_var orb = CORBA::ORB_init (argc, argv, 0, ACE_TRY_ENV);
+ ACE_CHECK_RETURN (-1);
+
+ // Initialize options based on command-line arguments.
+ int parse_args_result = parse_args (argc, argv);
+ if (parse_args_result != 0)
+ return parse_args_result;
+
+ // Get an object reference from the argument string.
+ CORBA::Object_var object = orb->string_to_object (server_IOR_, ACE_TRY_ENV);
ACE_CHECK_RETURN (-1);
+ // Try to narrow the object reference to a Foo reference.
+ Foo_var foo_var = Foo::_narrow (object.in (), ACE_TRY_ENV);
+ ACE_CHECK_RETURN (-1);
+
+
+ CORBA::String_var original_location =
+ orb->object_to_string (foo_var.in (), ACE_TRY_ENV);
+ ACE_CHECK_RETURN (-1);
+
+ if (do_calls (foo_var.in()) == -1)
+ return -1;
+
return 0;
}
+