diff options
Diffstat (limited to 'TAO/tao/CurrentS.cpp')
-rw-r--r-- | TAO/tao/CurrentS.cpp | 47 |
1 files changed, 46 insertions, 1 deletions
diff --git a/TAO/tao/CurrentS.cpp b/TAO/tao/CurrentS.cpp index faa403a31aa..21c556940be 100644 --- a/TAO/tao/CurrentS.cpp +++ b/TAO/tao/CurrentS.cpp @@ -16,14 +16,59 @@ 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, @@ -56,7 +101,7 @@ void POA_CORBA::Current::_dispatch (CORBA::ServerRequest &req, void *context, CO // find the skeleton corresponding to this opname if (this->_find (opname, skel) == -1) { - env.exception (new CORBA_BAD_OPERATION ()); + env.exception (new CORBA_BAD_OPERATION (CORBA::COMPLETED_NO)); ACE_ERROR ((LM_ERROR, "Bad operation <%s>\n", opname)); } else |