📄 client.cpp
字号:
CORBA::Request_var *request;
ACE_NEW_RETURN (request, CORBA::Request_var[burst], 1);
for (int i = 0; i < niterations; ++i)
{
int j;
for (j = 0; j != burst; ++j)
{
CORBA::ULongLong start = ACE_OS::gethrtime ();
request[j] =
roundtrip->_request ("test_char_method"
ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (-1);
request[j]->add_in_arg ("char_load") <<= cl;
request[j]->add_in_arg ("send_time") <<= start;
request[j]->set_return_type (CORBA::_tc_ulonglong);
request[j]->send_deferred (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (-1);
}
for (j = 0; j != burst; ++j)
{
request[j]->get_response (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (-1);
CORBA::ULongLong retval;
if ((request[j]->return_value () >>= retval) == 1)
{
ACE_hrtime_t now = ACE_OS::gethrtime ();
history.sample (now - retval);
}
}
}
delete[] request;
ACE_hrtime_t test_end = ACE_OS::gethrtime ();
ACE_DEBUG ((LM_DEBUG, "test finished\n"));
ACE_DEBUG ((LM_DEBUG, "High resolution timer calibration...."));
ACE_UINT32 gsf = ACE_High_Res_Timer::global_scale_factor ();
ACE_DEBUG ((LM_DEBUG, "done\n"));
if (do_dump_history)
{
history.dump_samples ("HISTORY", gsf);
}
ACE_Basic_Stats stats;
history.collect_basic_stats (stats);
stats.dump_results ("Total", gsf);
ACE_Throughput_Stats::dump_throughput ("Total", gsf,
test_end - test_start,
stats.samples_count ());
return 0;
}
int
test_longlong_seq (Test::Roundtrip_ptr roundtrip ACE_ENV_ARG_DECL)
{
ACE_Sample_History history (niterations);
Test::longlong_load ll (sz);
ll.length (sz);
ACE_hrtime_t test_start = ACE_OS::gethrtime ();
CORBA::Request_var *request;
ACE_NEW_RETURN (request, CORBA::Request_var[burst], 1);
for (int i = 0; i < niterations; ++i)
{
int j;
for (j = 0; j != burst; ++j)
{
CORBA::ULongLong start = ACE_OS::gethrtime ();
request[j] =
roundtrip->_request ("test_longlong_method"
ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (-1);
request[j]->add_in_arg ("longlong_load") <<= ll;
request[j]->add_in_arg ("send_time") <<= start;
request[j]->set_return_type (CORBA::_tc_ulonglong);
request[j]->send_deferred (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (-1);
}
for (j = 0; j != burst; ++j)
{
request[j]->get_response (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (-1);
CORBA::ULongLong retval;
if ((request[j]->return_value () >>= retval) == 1)
{
ACE_hrtime_t now = ACE_OS::gethrtime ();
history.sample (now - retval);
}
}
}
delete[] request;
ACE_hrtime_t test_end = ACE_OS::gethrtime ();
ACE_DEBUG ((LM_DEBUG, "test finished\n"));
ACE_DEBUG ((LM_DEBUG, "High resolution timer calibration...."));
ACE_UINT32 gsf = ACE_High_Res_Timer::global_scale_factor ();
ACE_DEBUG ((LM_DEBUG, "done\n"));
if (do_dump_history)
{
history.dump_samples ("HISTORY", gsf);
}
ACE_Basic_Stats stats;
history.collect_basic_stats (stats);
stats.dump_results ("Total", gsf);
ACE_Throughput_Stats::dump_throughput ("Total", gsf,
test_end - test_start,
stats.samples_count ());
return 0;
}
int
test_double_seq (Test::Roundtrip_ptr roundtrip ACE_ENV_ARG_DECL)
{
ACE_Sample_History history (niterations);
Test::double_load dl (sz);
dl.length (sz);
ACE_hrtime_t test_start = ACE_OS::gethrtime ();
CORBA::Request_var *request;
ACE_NEW_RETURN (request, CORBA::Request_var[burst], 1);
for (int i = 0; i < niterations; ++i)
{
int j;
for (j = 0; j != burst; ++j)
{
CORBA::ULongLong start = ACE_OS::gethrtime ();
request[j] =
roundtrip->_request ("test_double_method"
ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (-1);
request[j]->add_in_arg ("double_load") <<= dl;
request[j]->add_in_arg ("send_time") <<= start;
request[j]->set_return_type (CORBA::_tc_ulonglong);
request[j]->send_deferred (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (-1);
}
for (j = 0; j != burst; ++j)
{
request[j]->get_response (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (-1);
CORBA::ULongLong retval;
if ((request[j]->return_value () >>= retval) == 1)
{
ACE_hrtime_t now = ACE_OS::gethrtime ();
history.sample (now - retval);
}
}
}
delete[] request;
ACE_hrtime_t test_end = ACE_OS::gethrtime ();
ACE_DEBUG ((LM_DEBUG, "test finished\n"));
ACE_DEBUG ((LM_DEBUG, "High resolution timer calibration...."));
ACE_UINT32 gsf = ACE_High_Res_Timer::global_scale_factor ();
ACE_DEBUG ((LM_DEBUG, "done\n"));
if (do_dump_history)
{
history.dump_samples ("HISTORY", gsf);
}
ACE_Basic_Stats stats;
history.collect_basic_stats (stats);
stats.dump_results ("Total", gsf);
ACE_Throughput_Stats::dump_throughput ("Total", gsf,
test_end - test_start,
stats.samples_count ());
return 0;
}
// The main() function starts here
int
main (int argc, char *argv[])
{
int priority =
(ACE_Sched_Params::priority_min (ACE_SCHED_FIFO)
+ ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2;
// Enable FIFO scheduling, e.g., RT scheduling class on Solaris.
if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO,
priority,
ACE_SCOPE_PROCESS)) != 0)
{
if (ACE_OS::last_error () == EPERM)
{
ACE_DEBUG ((LM_DEBUG,
"client (%P|%t): user is not superuser, "
"test runs in time-shared class\n"));
}
else
ACE_ERROR ((LM_ERROR,
"client (%P|%t): sched_params failed\n"));
}
ACE_TRY_NEW_ENV
{
CORBA::ORB_var orb =
CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
if (parse_args (argc, argv) != 0)
return 1;
CORBA::Object_var object =
orb->string_to_object (ior ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
Test::Roundtrip_var roundtrip =
Test::Roundtrip::_narrow (object.in () ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
if (CORBA::is_nil (roundtrip.in ()))
{
ACE_ERROR_RETURN ((LM_ERROR,
"Nil Test::Roundtrip reference <%s>\n",
ior),
1);
}
Test::octet_load oc;
for (int j = 0; j < 100; ++j)
{
ACE_hrtime_t start = 0;
(void) roundtrip->test_octet_method (oc,
start
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
}
// Test various sequence types
if (ACE_OS::strcmp (data_type, "octet") == 0 )
{
test_octet_seq (roundtrip.in () ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
}
else if (ACE_OS::strcmp (data_type, "char") == 0)
{
test_char_seq (roundtrip.in () ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
}
else if (ACE_OS::strcmp (data_type, "long") == 0)
{
test_long_seq (roundtrip.in () ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
}
else if (ACE_OS::strcmp (data_type, "short") == 0)
{
test_short_seq (roundtrip.in () ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
}
else if (ACE_OS::strcmp (data_type, "double") == 0)
{
test_double_seq (roundtrip.in () ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
}
else if (ACE_OS::strcmp (data_type, "longlong") == 0)
{
test_longlong_seq (roundtrip.in () ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
}
if (do_shutdown)
{
roundtrip->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
}
}
ACE_CATCHANY
{
ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
"Caught exception:");
return 1;
}
ACE_ENDTRY;
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -