summaryrefslogtreecommitdiff
path: root/TAO/tao/CurrentS.cpp
blob: 5e4302083ba67459532cbf5244e3aafac533bf33 (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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
/* -*- C++ -*- */
// $Id$
// ******  Code generated by the The ACE ORB (TAO) IDL Compiler *******
// TAO ORB and the TAO IDL Compiler have been developed by Washington
// University Computer Science's Distributed Object Computing Group.
//
// Information on TAO is available at
//                 http://www.cs.wustl.edu/~schmidt/TAO.html

#include "corba.h"

ACE_RCSID(tao, CurrentS, "$Id$")

static const TAO_operation_db_entry CORBA_Current_operations [] = {
  {"_is_a", &POA_CORBA::Current::_is_a_skel}
};

static const CORBA::Long _tao_CORBA_Current_optable_size = sizeof (ACE_Hash_Map_Entry<const char *, TAO_Skeleton>) * (3);
static char _tao_CORBA_Current_optable_pool [_tao_CORBA_Current_optable_size];
static ACE_Static_Allocator_Base _tao_CORBA_Current_allocator (_tao_CORBA_Current_optable_pool, _tao_CORBA_Current_optable_size);
TAO_Dynamic_Hash_OpTable tao_CORBA_Current_optable (CORBA_Current_operations, 1, 2, &_tao_CORBA_Current_allocator);
// skeleton constructor
POA_CORBA::Current::Current (void)
{
  this->optable_ = &tao_CORBA_Current_optable;
}

// skeleton destructor
POA_CORBA::Current::~Current (void)
{
}
void POA_CORBA::Current::_is_a_skel (
    CORBA::ServerRequest &_tao_server_request,
    void * _tao_object_reference,
    void * /*context*/,
    CORBA::Environment &_tao_environment
  )
{
  static const TAO_Param_Data_Skel CORBA_Current_is_a_paramdata [] =
  {
    {CORBA::_tc_boolean, 0, 0},
    {CORBA::_tc_string, CORBA::ARG_IN, 0}
  };
  static const TAO_Call_Data_Skel CORBA_Current_is_a_calldata =
  {"_is_a", 1, 2, CORBA_Current_is_a_paramdata};
  //  CORBA::Environment _tao_skel_environment;
  POA_CORBA::Current_ptr  _tao_impl = (POA_CORBA::Current_ptr) _tao_object_reference;
  CORBA::Boolean _tao_retval;
  char *_tao_value = 0;
  _tao_server_request.demarshal (
    _tao_environment,
    &CORBA_Current_is_a_calldata,
    &_tao_retval,
    &_tao_value
  );
  if (_tao_environment.exception () != 0) return;
  _tao_retval = _tao_impl->_is_a (_tao_value, _tao_environment);
  _tao_server_request.marshal (
    _tao_environment,
    //    _tao_skel_environment,
    &CORBA_Current_is_a_calldata,
    &_tao_retval,
    &_tao_value
  );
  CORBA::string_free (_tao_value);
}

CORBA::Boolean POA_CORBA::Current::_is_a (
    const char* value,
    CORBA::Environment &_tao_environment
  )
{
  if (
    (!ACE_OS::strcmp ((char *)value, "IDL:CORBA/Current:1.0")) ||
    (!ACE_OS::strcmp ((char *)value, CORBA::_tc_Object->id (_tao_environment))))
      return 1;
    else
      return 0;
}

void* POA_CORBA::Current::_downcast (
    const char* logical_type_id
  )
{
  if (ACE_OS::strcmp (logical_type_id, "IDL:CORBA/Current:1.0") == 0)
    return ACE_static_cast (POA_CORBA::Current_ptr, this);
  if (ACE_OS::strcmp (logical_type_id, "IDL:omg.org/CORBA/Object:1.0") == 0)
    return ACE_static_cast(PortableServer::Servant, this);
  return 0;
}

void POA_CORBA::Current::_dispatch (CORBA::ServerRequest &req, void *context, CORBA::Environment &env)
{
  TAO_Skeleton skel; // pointer to skeleton for operation
  const char *opname = req.operation (); // retrieve operation name
  // find the skeleton corresponding to this opname
  if (this->_find (opname, skel) == -1)
  {
    env.exception (new CORBA_BAD_OPERATION (CORBA::COMPLETED_NO));
    ACE_ERROR ((LM_ERROR, "Bad operation <%s>\n", opname));
  }
else
    skel (req, this, context, env);
}

const char* POA_CORBA::Current::_interface_repository_id (void) const
{
  return "IDL:CORBA/Current:1.0";
}

POA_CORBA::_tao_collocated_Current::_tao_collocated_Current (
    POA_CORBA::Current_ptr  servant,
    STUB_Object *stub
  )
  : CORBA_Current (stub, servant, 1),
    CORBA_Object (stub, servant, 1),
    servant_ (servant)
{
}

POA_CORBA::Current_ptr POA_CORBA::_tao_collocated_Current::_get_servant (void) const
{
  return this->servant_;
}

CORBA::Boolean POA_CORBA::_tao_collocated_Current::_is_a (
    const char* logical_type_id,
    CORBA::Environment &_tao_environment
  )
{
  return this->servant_->_is_a (
      logical_type_id,
      _tao_environment
    );
}


CORBA::Current*
POA_CORBA::Current::_this (CORBA_Environment &_env)
{
  STUB_Object *stub = this->_create_stub (_env);
  if (_env.exception () != 0)
    return 0;
  return new POA_CORBA::_tao_collocated_Current (this, stub);
}