summaryrefslogtreecommitdiff
path: root/trunk/TAO/tests/DSI_AMI_Gateway/My_DII_Reply_Handler.cpp
blob: 038efd7fe6c37bf703873c2ee789ebf541632b94 (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
//$Id$

#include "My_DII_Reply_Handler.h"
#include "ace/Log_Msg.h"
#include "tao/AnyTypeCode/NVList.h"
#include "tao/AnyTypeCode/Any.h"

My_DII_Reply_Handler::My_DII_Reply_Handler(
    TAO_AMH_DSI_Response_Handler_ptr rph,
    CORBA::ORB_var orb)
 : response_handler_ (rph),
  orb_ (orb)
{
}

My_DII_Reply_Handler::~My_DII_Reply_Handler()
{
}

void
My_DII_Reply_Handler::handle_response(TAO_InputCDR &incoming)
{
  CORBA::NVList_ptr list;

  try
  {
    this->orb_->create_list (0, list);

    bool lazy_evaluation = true;
    list->_tao_incoming_cdr (incoming,
                             CORBA::ARG_OUT | CORBA::ARG_INOUT,
                             lazy_evaluation);
  }
  catch (CORBA::SystemException &ex)
  {
    TAO_AMH_DSI_Exception_Holder h (ex._tao_duplicate());
    response_handler_->invoke_excep(&h);
  }
  catch (...)
  {
    ACE_ERROR ((LM_ERROR,
                "ERROR: Unknown Exception\n"));
    TAO_AMH_DSI_Exception_Holder h (new CORBA::UNKNOWN());
    response_handler_->invoke_excep(&h);
  }

    if (!CORBA::is_nil (this->response_handler_))
    this->response_handler_->invoke_reply (list,
                                           0 // result
                                          );
}

void
My_DII_Reply_Handler::handle_excep (TAO_InputCDR &incoming,
                                    CORBA::ULong reply_status)
{
  ACE_DEBUG((LM_DEBUG, "calling My_DII_Reply_Handler::handle_excep()\n"));
  this->response_handler_->gateway_exception_reply (reply_status, incoming);

}