blob: 994f1011806bed72281d54467506b460b93edeae (
plain)
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
|
// $Id$
#include <ace/High_Res_Timer.h>
#include <tao/RTCORBA/RTCORBA.h>
#include "FTClient_Timer_Handler.h"
#include "ciao/CIAO_common.h"
#include "WorkerC.h"
#include "FTClient_exec.h"
namespace CIDL_FTClient_Impl
{
FTClient_Timer_Handler::FTClient_Timer_Handler (
CIDL_FTClient_Impl::FTClient_exec_i * client_executor)
: client_executor_ (client_executor)
{
}
void
FTClient_Timer_Handler::set_orb (CORBA::ORB_ptr orb)
{
orb_ = CORBA::ORB::_duplicate (orb);
}
int
FTClient_Timer_Handler::handle_timeout (const ACE_Time_Value &,
const void *)
{
DeCoRAM::Worker_var server = client_executor_->server ();
CORBA::Object_var obj = orb_->resolve_initial_references ("RTCurrent");
RTCORBA::Current_var rt_current = RTCORBA::Current::_narrow (obj);
// rt_current->the_priority (client_executor_->priority ());
try
{
ACE_hrtime_t start, end;
start = ACE_OS::gethrtime ();
// we have to do some profiling first to see how we can achieve
// the correct execution time.
server->run_task (client_executor_->execution_time ());
end = ACE_OS::gethrtime ();
CIAO_DEBUG ((LM_DEBUG,
"response time for %f was %d.\n",
client_executor_->execution_time (),
end - start));
}
catch (CORBA::SystemException & ex)
{
CIAO_DEBUG ((LM_WARNING,
"FTClient_Timer_Handler::handle_timeout () - "
"caught: %s", ex._info ().c_str ()));
}
return 0;
}
} // end namespace CIDL_FTClient_Impl
|