Changes to attempt to silence bcc64x
[ACE_TAO.git] / TAO / orbsvcs / tests / Security / Big_Request / client.cpp
blobac4b6f389cd36232891c1f9871e37df49bfcc6e2
1 #include "TX_ObjectC.h"
2 #include "ace/OS_NS_stdlib.h"
3 #include "ace/OS_NS_string.h"
4 #include "ace/Get_Opt.h"
5 #include "ace/SString.h"
7 const ACE_TCHAR *ior = ACE_TEXT("file://test.ior");
8 const char *cert_file = "cacert.pem";
9 long number_iterations = 1;
10 long data_size = 3461724;
11 bool shutdown_server = false;
13 int
14 parse_args (int argc, ACE_TCHAR *argv[])
16 ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("k:i:d:x"));
17 int c;
19 while ((c = get_opts ()) != -1)
20 switch (c)
22 case 'k':
23 ior = get_opts.opt_arg ();
24 break;
25 case 'i':
26 number_iterations = ACE_OS::atoi (get_opts.opt_arg ());
27 break;
28 case 'd':
29 data_size = ACE_OS::atoi (get_opts.opt_arg ());
30 break;
31 case 'x':
32 shutdown_server = true;
33 break;
34 case '?':
35 default:
36 ACE_ERROR_RETURN ((LM_ERROR,
37 "Usage: %s "
38 "-k <ior> "
39 "-i <iterations> "
40 "-d <datasize> "
41 "-x shutdown "
42 "\n",
43 argv [0]),
44 -1);
47 // Indicates successful parsing of the command line
48 return 0;
51 int
52 ACE_TMAIN(int argc, ACE_TCHAR *argv[])
54 try
56 ACE_CString env ("SSL_CERT_FILE=");
57 env += cert_file;
58 ACE_OS::putenv (env.c_str ());
60 CORBA::ORB_var orb = CORBA::ORB_init (argc, argv);
62 if (::parse_args (argc, argv) != 0)
63 return 1;
65 CORBA::Object_var obj =
66 orb->string_to_object (ior);
68 if (CORBA::is_nil (obj.in ()))
69 ACE_ERROR_RETURN ((LM_ERROR,
70 "ERROR: Nil server object reference\n"),
71 -1);
73 TX_Object_var txObject =
74 TX_Object::_narrow (obj.in ());
76 DataSeq data_input;
78 CORBA::ULong const len = data_size;
80 data_input.length (len);
82 // Fill in some useless data.
83 for (CORBA::ULong i = 0; i < len; ++i)
85 data_input[i] = i % 9;
88 for (int iteration = 0; iteration < number_iterations; ++iteration)
90 ACE_DEBUG ((LM_DEBUG,
91 "Sending octet sequence of length:\t%u\n",
92 data_input.length ()));
94 txObject->send (data_input);
96 DataSeq_var data_output;
98 txObject->recv (data_output.out ());
100 ACE_DEBUG ((LM_DEBUG,
101 "Received octet sequence of length:\t%u\n",
102 data_output->length ()));
104 // Sanity check
105 if (data_output->length () != len
106 || ACE_OS::memcmp (data_input.get_buffer (),
107 data_output->get_buffer (),
108 len) != 0)
110 ACE_ERROR_RETURN ((LM_ERROR,
111 "ERROR: Received octet sequence does not match "
112 "the one that was sent.\n"),
113 -1);
117 if (shutdown_server)
119 txObject->shutdown ();
122 orb->destroy ();
124 catch (const CORBA::Exception& ex)
126 ex._tao_print_exception ("ERROR");
128 return -1;
131 ACE_DEBUG ((LM_DEBUG,
132 "\n"
133 "SSLIOP Big_Request test passed.\n"));
135 return 0;