/usr/share/doc/polyorb-doc/examples/corba/send/interop/tao/listener.cpp is in polyorb-doc 2.11~20140418-3.2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | #include "Printer.h"
#include "ace/Get_Opt.h"
ACE_RCSID (Printer, listener, "listener.cpp")
static char* conf[] = {"", "-ORBsvcconf", "server.conf"};
static int nb_conf_param = 3;
static const char* groupURL_file = "groupURL";
bool print_ior = false;
int
main (int argc, char *argv[])
{
ACE_TRY_NEW_ENV
{
conf[0] = argv[0];
CORBA::ORB_var orb =
CORBA::ORB_init (nb_conf_param, conf, "" ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
CORBA::Object_var poa_object =
orb->resolve_initial_references("RootPOA" ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
PortableServer::POA_var root_poa =
PortableServer::POA::_narrow (poa_object.in () ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
if (CORBA::is_nil (root_poa.in ()))
ACE_ERROR_RETURN ((LM_ERROR,
" (%P|%t) Panic: nil RootPOA\n"),
1);
PortableServer::POAManager_var poa_manager =
root_poa->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
switch (argc) {
case 1: break;
case 2: if (strcmp (argv[1], "-v") == 0) {
print_ior = true;
break;
}
default:
cout << "usage: " << argv[0] << " [-v]" << "\n";
return 1;
}
// Get the group IOR.
FILE *input_file= ACE_OS::fopen (groupURL_file, "r");
if (input_file == 0)
ACE_ERROR_RETURN ((LM_ERROR,
"Cannot open intput file for reading IOR: %s",
groupURL_file),
1);
char groupURL[1000];
int i = 0;
int k;
while ((k = ACE_OS::fgetc (input_file)) > 32) {
groupURL[i++] = k;
}
groupURL[i] = 0;
ACE_OS::fclose (input_file);
CORBA::String_var ior = CORBA::string_dup (groupURL);
CORBA::Object_var group1 =
orb->string_to_object (ior.in () ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
cout << "Group IOR : '" << ior.in () << "'\n";
PortableServer::ObjectId_var id =
root_poa->create_id_for_reference (group1.in ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
// Create and activate an instance of our servant.
Printer server_impl (orb.in (), 0);
root_poa->activate_object_with_id (id.in (),
&server_impl
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
if (print_ior) {
Test::Printer_var server =
server_impl._this (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
cout << "Object IOR : '" << orb->object_to_string (server.in () ACE_ENV_ARG_PARAMETER) << "'\n";
}
poa_manager->activate (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
orb->run (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
ACE_DEBUG ((LM_DEBUG, "(%P|%t) server - event loop finished\n"));
root_poa->destroy (1, 1 ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
orb->destroy (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
}
ACE_CATCHANY
{
ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
"Exception caught:");
return 1;
}
ACE_ENDTRY;
return 0;
}
|