1
// test_i.cpp,v 1.2 2003/10/08 13:26:32 venkita Exp
4
#include "ace/High_Res_Timer.h"
9
#if !defined(__ACE_INLINE__)
11
#endif /* __ACE_INLINE__ */
13
ACE_RCSID(MT_Server, test_i, "test_i.cpp,v 1.2 2003/10/08 13:26:32 venkita Exp")
16
Simple_Server_i::test_method (CORBA::Long exec_duration ACE_ENV_ARG_DECL)
17
ACE_THROW_SPEC ((CORBA::SystemException))
19
ACE_hthread_t thr_handle;
20
ACE_Thread::self (thr_handle);
26
this->current_->id (ACE_ENV_SINGLE_ARG_PARAMETER)->get_buffer (),
27
sizeof (this->current_->id (ACE_ENV_SINGLE_ARG_PARAMETER)->length ()));
29
ACE_High_Res_Timer timer;
30
ACE_Time_Value elapsed_time;
32
ACE_DEBUG ((LM_DEBUG, "Request in thread %t\n"));
34
if (ACE_Thread::getprio (thr_handle, prio) == -1)
39
ACE_TEXT ("getprio not supported on this platform\n")
43
ACE_ERROR_RETURN ((LM_ERROR,
45
ACE_TEXT ("getprio failed")),
50
"Request in thread %t, prio = %d,"
51
"exec duration = %u\n", prio, exec_duration));
53
static CORBA::ULong prime_number = 9619899;
55
ACE_Time_Value compute_count_down_time (exec_duration, 0);
56
ACE_Countdown_Time compute_count_down (&compute_count_down_time);
58
//Applicable only for CV based implementations
60
ACE_Time_Value yield_interval (1,0);
62
ACE_Time_Value yield_count_down_time (yield_interval);
63
ACE_Countdown_Time yield_count_down (&yield_count_down_time);
67
while (compute_count_down_time > ACE_Time_Value::zero)
69
ACE::is_prime (prime_number,
75
#ifdef KOKYU_DSRT_LOGGING
79
"(%t|%T) loop # = %d, load = %usec\n", j, exec_duration));
84
ACE_Time_Value run_time = ACE_OS::gettimeofday ();
85
task_stats_.sample (ACE_UINT64 (run_time.msec ()), guid);
88
compute_count_down.update ();
92
yield_count_down.update ();
93
if (yield_count_down_time <= ACE_Time_Value::zero)
95
CORBA::Policy_var sched_param_policy =
96
CORBA::Policy::_duplicate (current_->
97
scheduling_parameter(ACE_ENV_SINGLE_ARG_PARAMETER));
99
const char * name = 0;
101
CORBA::Policy_ptr implicit_sched_param = 0;
102
current_->update_scheduling_segment (name,
103
sched_param_policy.in (),
105
ACE_ENV_ARG_PARAMETER);
106
yield_count_down_time = yield_interval;
107
yield_count_down.start ();
113
timer.elapsed_time (elapsed_time);
115
ACE_DEBUG ((LM_DEBUG,
116
"Request processing in thread %t done, "
117
"prio = %d, load = %d, elapsed time = %umsec\n",
118
prio, exec_duration, elapsed_time.msec () ));
120
return exec_duration;
124
Simple_Server_i::shutdown (ACE_ENV_SINGLE_ARG_DECL)
125
ACE_THROW_SPEC ((CORBA::SystemException))
127
ACE_DEBUG ((LM_DEBUG, "shutdown request from client\n"));
128
this->orb_->shutdown (0 ACE_ENV_ARG_PARAMETER);