1
// server.cpp,v 1.2 2003/11/02 23:27:23 dhinton Exp
4
#include "ace/Get_Opt.h"
5
#include "ace/Sched_Params.h"
6
#include "ace/OS_NS_errno.h"
8
#include "tao/Strategies/advanced_resource.h"
10
ACE_RCSID(Single_Threaded_Latency, server, "server.cpp,v 1.2 2003/11/02 23:27:23 dhinton Exp")
12
const char *ior_output_file = "test.ior";
15
parse_args (int argc, char *argv[])
17
ACE_Get_Opt get_opts (argc, argv, "o:");
20
while ((c = get_opts ()) != -1)
24
ior_output_file = get_opts.opt_arg ();
29
ACE_ERROR_RETURN ((LM_ERROR,
36
// Indicates sucessful parsing of the command line
41
main (int argc, char *argv[])
44
(ACE_Sched_Params::priority_min (ACE_SCHED_FIFO)
45
+ ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2;
46
priority = ACE_Sched_Params::next_priority (ACE_SCHED_FIFO,
48
// Enable FIFO scheduling, e.g., RT scheduling class on Solaris.
50
if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO,
52
ACE_SCOPE_PROCESS)) != 0)
54
if (ACE_OS::last_error () == EPERM)
57
"server (%P|%t): user is not superuser, "
58
"test runs in time-shared class\n"));
62
"server (%P|%t): sched_params failed\n"));
68
CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER);
71
CORBA::Object_var poa_object =
72
orb->resolve_initial_references("RootPOA" ACE_ENV_ARG_PARAMETER);
75
if (CORBA::is_nil (poa_object.in ()))
76
ACE_ERROR_RETURN ((LM_ERROR,
77
" (%P|%t) Unable to initialize the POA.\n"),
80
PortableServer::POA_var root_poa =
81
PortableServer::POA::_narrow (poa_object.in () ACE_ENV_ARG_PARAMETER);
84
PortableServer::POAManager_var poa_manager =
85
root_poa->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER);
88
if (parse_args (argc, argv) != 0)
91
Roundtrip *roundtrip_impl;
92
ACE_NEW_RETURN (roundtrip_impl,
93
Roundtrip (orb.in ()),
95
PortableServer::ServantBase_var owner_transfer(roundtrip_impl);
97
Test::Roundtrip_var roundtrip =
98
roundtrip_impl->_this (ACE_ENV_SINGLE_ARG_PARAMETER);
101
CORBA::String_var ior =
102
orb->object_to_string (roundtrip.in () ACE_ENV_ARG_PARAMETER);
105
// If the ior_output_file exists, output the ior to it
106
FILE *output_file= ACE_OS::fopen (ior_output_file, "w");
107
if (output_file == 0)
108
ACE_ERROR_RETURN ((LM_ERROR,
109
"Cannot open output file for writing IOR: %s",
112
ACE_OS::fprintf (output_file, "%s", ior.in ());
114
ACE_OS::fclose (output_file);
116
poa_manager->activate (ACE_ENV_SINGLE_ARG_PARAMETER);
119
orb->run (ACE_ENV_SINGLE_ARG_PARAMETER);
122
ACE_DEBUG ((LM_DEBUG, "(%P|%t) server - event loop finished\n"));
124
root_poa->destroy (1, 1 ACE_ENV_ARG_PARAMETER);
127
orb->destroy (ACE_ENV_SINGLE_ARG_PARAMETER);
132
ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Exception caught:");