1
// client.cpp,v 1.1 2002/04/04 19:04:50 bala Exp
3
#include "ace/Get_Opt.h"
4
#include "Receiver_i.h"
6
#include "tao/BiDir_GIOP/BiDirGIOP.h"
7
#include "Client_Task.h"
9
ACE_RCSID(BiDirectional, client, "client.cpp,v 1.6 2001/03/30 20:11:05 bala Exp")
11
const char *ior = "file://test.ior";
14
parse_args (int argc, char *argv[])
16
ACE_Get_Opt get_opts (argc, argv, "k:");
19
while ((c = get_opts ()) != -1)
23
ior = get_opts.optarg;
27
ACE_ERROR_RETURN ((LM_ERROR,
34
// Indicates sucessful parsing of the command line
39
main (int argc, char *argv[])
41
ACE_DECLARE_NEW_CORBA_ENV;
46
CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER);
49
if (parse_args (argc, argv) != 0)
52
CORBA::Object_var poa_object =
53
orb->resolve_initial_references ("RootPOA" ACE_ENV_ARG_PARAMETER);
56
if (CORBA::is_nil (poa_object.in ()))
57
ACE_ERROR_RETURN ((LM_ERROR,
58
" (%P|%t) Unable to initialize the POA.\n"),
61
PortableServer::POA_var root_poa =
62
PortableServer::POA::_narrow (poa_object.in () ACE_ENV_ARG_PARAMETER);
65
PortableServer::POAManager_var poa_manager =
66
root_poa->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER);
69
// Policies for the childPOA to be created.
70
CORBA::PolicyList policies (1);
74
pol <<= BiDirPolicy::BOTH;
76
orb->create_policy (BiDirPolicy::BIDIRECTIONAL_POLICY_TYPE,
78
ACE_ENV_ARG_PARAMETER);
81
// Create POA as child of RootPOA with the above policies. This POA
82
// will receive request in the same connection in which it sent
84
PortableServer::POA_var child_poa =
85
root_poa->create_POA ("childPOA",
88
ACE_ENV_ARG_PARAMETER);
91
// Creation of childPOA is over. Destroy the Policy objects.
92
for (CORBA::ULong i = 0;
93
i < policies.length ();
96
policies[i]->destroy (ACE_ENV_SINGLE_ARG_PARAMETER);
100
poa_manager->activate (ACE_ENV_SINGLE_ARG_PARAMETER);
103
CORBA::Object_var object =
104
orb->string_to_object (ior
105
ACE_ENV_ARG_PARAMETER);
109
Sender::_narrow (object.in ()
110
ACE_ENV_ARG_PARAMETER);
113
if (CORBA::is_nil (sender.in ()))
115
ACE_ERROR_RETURN ((LM_ERROR,
116
"Object reference <%s> is nil\n",
122
Receiver_i *receiver;
123
ACE_NEW_RETURN (receiver,
127
PortableServer::ServantBase_var owner_transfer (receiver);
129
Receiver_var receiver_obj =
130
receiver->_this (ACE_ENV_SINGLE_ARG_PARAMETER);
133
// Send the calback object to the server
134
sender->receiver_object (receiver_obj.in ()
135
ACE_ENV_ARG_PARAMETER);
138
// Threads that will handle the call backs
139
Client_Task client_task (orb.in (),
140
ACE_Thread_Manager::instance ());
142
if (client_task.activate (THR_NEW_LWP | THR_JOINABLE, 4, 1) == -1)
144
ACE_ERROR ((LM_ERROR, "Error activating server task\n"));
147
ACE_Thread_Manager::instance ()->wait ();
150
receiver->get_event_count ();
152
ACE_DEBUG ((LM_DEBUG,
153
"(%P|%t) Number of events received.. [%d] \n",
156
root_poa->destroy (1,
158
ACE_ENV_ARG_PARAMETER);
163
ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
164
"Catched exception:");