summaryrefslogtreecommitdiff
path: root/CIAO/DAnCE/tests/CIAO/FTClientComponent/FTClient_Timer_Handler.cpp
blob: 8d6253eb40ff50cac30c77f75454e44659df45df (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 <ciao/CIAO_common.h>
#include "FTClient_Timer_Handler.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,
                     ACE_TEXT ("response time for %f was %d.\n"),
                     client_executor_->execution_time (),
                     end - start));
      }
    catch (CORBA::SystemException & ex)
      {
        CIAO_DEBUG ((LM_WARNING, 
                     ACE_TEXT ("FTClient_Timer_Handler::handle_timeout () -"
                               "caught: %s"), ex._info ().c_str ()));
      }

    return 0;
  }
    
} // end namespace CIDL_FTClient_Impl