www.pudn.com > Messenger.rar > MessengerS.cpp


// -*- C++ -*- 
// 
// $Id$ 
 
// ****  Code generated by the The ACE ORB (TAO) IDL Compiler **** 
// TAO and the TAO IDL Compiler have been developed by: 
//       Center for Distributed Object Computing 
//       Washington University 
//       St. Louis, MO 
//       USA 
//       http://www.cs.wustl.edu/~schmidt/doc-center.html 
// and 
//       Distributed Object Computing Laboratory 
//       University of California at Irvine 
//       Irvine, CA 
//       USA 
//       http://doc.ece.uci.edu/ 
// and 
//       Institute for Software Integrated Systems 
//       Vanderbilt University 
//       Nashville, TN 
//       USA 
//       http://www.isis.vanderbilt.edu/ 
// 
// Information about TAO is available at: 
//     http://www.cs.wustl.edu/~schmidt/TAO.html 
 
 
// TAO_IDL - Generated from  
// .\be\be_codegen.cpp:646 
 
#ifndef _TAO_IDL_MESSENGERS_CPP_ 
#define _TAO_IDL_MESSENGERS_CPP_ 
 
 
#include "MessengerS.h" 
#include "tao/PortableServer/Object_Adapter.h" 
#include "tao/PortableServer/Operation_Table.h" 
#include "tao/TAO_Server_Request.h" 
#include "tao/ORB_Core.h" 
#include "tao/Profile.h" 
#include "tao/Stub.h" 
#include "tao/IFR_Client_Adapter.h" 
#include "tao/Object_T.h" 
#include "tao/Typecode.h" 
#include "tao/DynamicC.h" 
#include "tao/Special_Basic_Arguments.h" 
#include "tao/UB_String_Arguments.h" 
#include "tao/PortableInterceptor.h" 
#if TAO_HAS_INTERCEPTORS == 1 
#include "tao/RequestInfo_Util.h" 
#include "tao/PICurrent.h" 
#include "tao/PortableServer/ServerRequestInfo.h" 
#include "tao/PortableServer/ServerInterceptorAdapter.h" 
#endif  /* TAO_HAS_INTERCEPTORS == 1 */ 
 
#include "ace/Dynamic_Service.h" 
#include "ace/Malloc_Allocator.h" 
#include "ace/config-all.h" 
 
#if defined (__BORLANDC__) 
#pragma option -w-rvl -w-rch -w-ccc -w-aus 
#endif /* __BORLANDC__ */ 
 
#if !defined (__ACE_INLINE__) 
#include "MessengerS.i" 
#endif /* !defined INLINE */ 
 
// TAO_IDL - Generated from 
// .\be\be_visitor_arg_traits.cpp:62 
 
// Arg traits specializations. 
namespace TAO 
{ 
} 
 
 
// TAO_IDL - Generated from 
// .\be\be_interface.cpp:1423 
 
class TAO_Messenger_Perfect_Hash_OpTable 
  : public TAO_Perfect_Hash_OpTable 
{ 
private: 
  unsigned int hash (const char *str, unsigned int len); 
 
public: 
  const TAO_operation_db_entry * lookup (const char *str, unsigned int len); 
}; 
 
/* C++ code produced by gperf version 2.8 (ACE version) */ 
/* Command-line: gperf -m -M -J -c -C -D -E -T -f 0 -F 0,0,0 -a -o -t -p -K opname_ -L C++ -Z TAO_Messenger_Perfect_Hash_OpTable -N lookup  */ 
unsigned int 
TAO_Messenger_Perfect_Hash_OpTable::hash (const char *str, unsigned int len) 
{ 
  static const unsigned char asso_values[] = 
    { 
#if defined (ACE_MVS) 
     18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 
     18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 
     18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 
     18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 
     18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 
     18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 
     18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 
     18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 
     18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 
     18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 
     18, 18, 18, 18, 18, 18, 18, 18, 18,  0, 
     18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 
     18, 18, 18, 18, 18, 18, 18, 18, 18,  0, 
     18, 18, 18,  5, 18, 18, 18, 18, 18, 18, 
     18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 
     18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 
     18, 18,  0,  0, 18, 18, 18, 18, 18, 18, 
     18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 
     18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 
     18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 
     18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 
     18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 
     18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 
     18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 
     18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 
     18, 18, 18, 18, 18, 18, 
#else 
     18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 
     18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 
     18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 
     18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 
     18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 
     18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 
     18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 
     18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 
     18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 
     18, 18, 18, 18, 18,  0, 18,  0, 18, 18, 
     18,  5, 18, 18, 18, 18, 18, 18, 18, 18, 
     18, 18, 18, 18, 18,  0,  0, 18, 18, 18, 
     18, 18, 18, 18, 18, 18, 18, 18, 
#endif /* ACE_MVS */ 
    }; 
  return len + asso_values[(int) str[len - 1]] + asso_values[(int) str[0]]; 
} 
 
const class TAO_operation_db_entry * 
TAO_Messenger_Perfect_Hash_OpTable::lookup (const char *str, unsigned int len) 
{ 
  enum 
    { 
      TOTAL_KEYWORDS = 5, 
      MIN_WORD_LENGTH = 5, 
      MAX_WORD_LENGTH = 13, 
      MIN_HASH_VALUE = 5, 
      MAX_HASH_VALUE = 17, 
      HASH_VALUE_RANGE = 13, 
      DUPLICATES = 0, 
      WORDLIST_SIZE = 10 
    }; 
 
  static const class TAO_operation_db_entry  wordlist[] = 
    { 
      {"",0,0,0},{"",0,0,0},{"",0,0,0},{"",0,0,0},{"",0,0,0}, 
      {"_is_a", &POA_Messenger::_is_a_skel, 0, 0}, 
      {"",0,0,0},{"",0,0,0},{"",0,0,0},{"",0,0,0}, 
      {"_component", &POA_Messenger::_component_skel, 0, 0}, 
      {"",0,0,0},{"",0,0,0}, 
      {"_non_existent", &POA_Messenger::_non_existent_skel, 0, 0}, 
      {"",0,0,0}, 
      {"_interface", &POA_Messenger::_interface_skel, 0, 0}, 
      {"",0,0,0}, 
      {"send_message", &POA_Messenger::send_message_skel, &_TAO_Messenger_ThruPOA_Proxy_Impl::send_message, 0}, 
    }; 
 
  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) 
    { 
      unsigned int key = hash (str, len); 
 
      if (key <= MAX_HASH_VALUE && key >= MIN_HASH_VALUE) 
        { 
          const char *s = wordlist[key].opname_; 
 
          if (*str == *s && !strncmp (str + 1, s + 1, len - 1)) 
            return &wordlist[key]; 
        } 
    } 
  return 0; 
} 
 
static TAO_Messenger_Perfect_Hash_OpTable tao_Messenger_optable; 
 
// TAO_IDL - Generated from 
// e:\ace_wrappers\tao\tao_idl\be\be_visitor_interface/interceptors_ss.cpp:53 
 
#if (TAO_HAS_INTERCEPTORS == 1) 
 
// TAO_IDL - Generated from 
// e:\ace_wrappers\tao\tao_idl\be\be_visitor_operation/interceptors_ss.cpp:74 
 
class TAO_ServerRequestInfo_Messenger_send_message : public TAO_ServerRequestInfo 
{ 
public: 
  TAO_ServerRequestInfo_Messenger_send_message ( 
      TAO_ServerRequest &_tao_server_request, 
      TAO_Object_Adapter::Servant_Upcall *tao_servant_upcall, 
      POA_Messenger *tao_impl, 
      const char * user_name, 
      const char * subject, 
      char *& message 
    ); 
   
  virtual Dynamic::ParameterList * arguments ( 
      ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS 
    ) 
    ACE_THROW_SPEC ((CORBA::SystemException)); 
   
  virtual Dynamic::ExceptionList * exceptions ( 
      ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS 
    ) 
    ACE_THROW_SPEC ((CORBA::SystemException)); 
   
  virtual CORBA::Any * result ( 
      ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS 
    ) 
    ACE_THROW_SPEC ((CORBA::SystemException)); 
   
  virtual char * target_most_derived_interface ( 
      ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS 
    ) 
    ACE_THROW_SPEC ((CORBA::SystemException)); 
   
  virtual CORBA::Boolean target_is_a ( 
      const char * id 
      ACE_ENV_ARG_DECL_WITH_DEFAULTS 
    ) 
    ACE_THROW_SPEC ((CORBA::SystemException)); 
   
  void result (CORBA::Boolean result); 
 
private: 
  TAO_ServerRequestInfo_Messenger_send_message ( 
      const TAO_ServerRequestInfo_Messenger_send_message & 
    ); 
   
  void operator= ( 
      const TAO_ServerRequestInfo_Messenger_send_message & 
    ); 
   
private: 
  POA_Messenger *_tao_impl; 
   
  const char * user_name_; 
  const char * subject_; 
  char *& message_; 
  CORBA::Boolean _result; 
}; 
 
// TAO_IDL - Generated from 
// e:\ace_wrappers\tao\tao_idl\be\be_visitor_operation/interceptors_ss.cpp:438 
 
TAO_ServerRequestInfo_Messenger_send_message::TAO_ServerRequestInfo_Messenger_send_message ( 
    TAO_ServerRequest &_tao_server_request, 
    TAO_Object_Adapter::Servant_Upcall *_tao_servant_upcall, 
    POA_Messenger *tao_impl, 
    const char * user_name, 
    const char * subject, 
    char *& message 
  ) 
  : TAO_ServerRequestInfo (_tao_server_request, _tao_servant_upcall), 
    _tao_impl (tao_impl), 
    user_name_ (user_name), 
    subject_ (subject), 
    message_ (message) 
{} 
 
Dynamic::ParameterList * 
TAO_ServerRequestInfo_Messenger_send_message::arguments ( 
    ACE_ENV_SINGLE_ARG_DECL 
  ) 
  ACE_THROW_SPEC ((CORBA::SystemException)) 
{ 
  // Generate the argument list on demand. 
  Dynamic::ParameterList *parameter_list = 
    TAO_RequestInfo_Util::make_parameter_list (ACE_ENV_SINGLE_ARG_PARAMETER); 
  ACE_CHECK_RETURN (0); 
   
  Dynamic::ParameterList_var safe_parameter_list = parameter_list; 
  parameter_list->length (3); 
  CORBA::ULong len = 0; 
   
  (*parameter_list)[len].argument <<= user_name_; 
  (*parameter_list)[len].mode = CORBA::PARAM_IN; 
  len++; 
   
  (*parameter_list)[len].argument <<= subject_; 
  (*parameter_list)[len].mode = CORBA::PARAM_IN; 
  len++; 
   
  (*parameter_list)[len].argument <<= message_; 
  (*parameter_list)[len].mode = CORBA::PARAM_INOUT; 
  len++; 
   
  return safe_parameter_list._retn (); 
} 
 
Dynamic::ExceptionList * 
TAO_ServerRequestInfo_Messenger_send_message::exceptions ( 
    ACE_ENV_SINGLE_ARG_DECL 
  ) 
  ACE_THROW_SPEC ((CORBA::SystemException)) 
{ 
  // Generate the exception list on demand. 
  Dynamic::ExceptionList *exception_list = 
    TAO_RequestInfo_Util::make_exception_list (ACE_ENV_SINGLE_ARG_PARAMETER); 
  ACE_CHECK_RETURN (0); 
   
  return exception_list; 
} 
 
CORBA::Any *  
TAO_ServerRequestInfo_Messenger_send_message::result ( 
    ACE_ENV_SINGLE_ARG_DECL 
  ) 
  ACE_THROW_SPEC ((CORBA::SystemException)) 
{ 
  // Generate the result on demand. 
  CORBA::Boolean tk_void_any = 0; 
  CORBA::Any *result_any = 
    TAO_RequestInfo_Util::make_any (tk_void_any ACE_ENV_ARG_PARAMETER); 
  ACE_CHECK_RETURN (0); 
   
  CORBA::Any_var safe_result_any = result_any; 
   
  (*result_any) <<= CORBA::Any::from_boolean (this->_result); 
   
  return safe_result_any._retn (); 
} 
 
char * 
TAO_ServerRequestInfo_Messenger_send_message::target_most_derived_interface ( 
    ACE_ENV_SINGLE_ARG_DECL_NOT_USED 
  ) 
  ACE_THROW_SPEC ((CORBA::SystemException)) 
{ 
  return 
    CORBA::string_dup (this->_tao_impl->_interface_repository_id ()); 
} 
 
CORBA::Boolean 
TAO_ServerRequestInfo_Messenger_send_message::target_is_a ( 
    const char * id 
    ACE_ENV_ARG_DECL 
  ) 
  ACE_THROW_SPEC ((CORBA::SystemException)) 
{ 
  return this->_tao_impl->_is_a (id ACE_ENV_ARG_PARAMETER); 
} 
 
void  
TAO_ServerRequestInfo_Messenger_send_message::result (CORBA::Boolean result) 
{ 
  // Update the result. 
   this->_result = result; 
} 
 
#endif /* TAO_HAS_INTERCEPTORS */ 
 
/////////////////////////////////////////////////////////////////////// 
//            Strategized Proxy Broker Implementation 
// 
 
// TAO_IDL - Generated from 
// e:\ace_wrappers\tao\tao_idl\be\be_visitor_interface/strategized_proxy_broker_ss.cpp:40 
 
// Factory function Implementation. 
_TAO_Messenger_Strategized_Proxy_Broker * 
_TAO_Messenger_Strategized_Proxy_Broker::the_TAO_Messenger_Strategized_Proxy_Broker (void) 
{ 
  static _TAO_Messenger_Strategized_Proxy_Broker 
  strategized_proxy_broker; 
   
  return &strategized_proxy_broker; 
} 
 
_TAO_Messenger_Strategized_Proxy_Broker::_TAO_Messenger_Strategized_Proxy_Broker (void) 
{ 
} 
 
_TAO_Messenger_Strategized_Proxy_Broker::~_TAO_Messenger_Strategized_Proxy_Broker (void) 
{ 
} 
 
TAO::Collocation_Strategy 
_TAO_Messenger_Strategized_Proxy_Broker::get_strategy ( 
    CORBA::Object_ptr obj 
    ACE_ENV_ARG_DECL 
  ) 
  ACE_THROW_SPEC ((CORBA::SystemException)) 
{ 
  TAO::Collocation_Strategy strategy = 
    TAO_ORB_Core::collocation_strategy (obj ACE_ENV_ARG_PARAMETER); 
  ACE_CHECK_RETURN (TAO::TAO_CS_REMOTE_STRATEGY); 
   
  return strategy; 
} 
 
void 
_TAO_Messenger_Strategized_Proxy_Broker::dispatch ( 
    CORBA::Object_ptr obj, 
    CORBA::Object_out forward_obj, 
    TAO::Argument ** args, 
    int num_args, 
    const char * op, 
    size_t op_len, 
    TAO::Collocation_Strategy strategy 
    ACE_ENV_ARG_DECL 
  ) 
  ACE_THROW_SPEC ((CORBA::Exception)) 
{ 
  TAO_Object_Adapter::Servant_Upcall servant_upcall ( 
      obj->_stubobj ()->servant_orb_var ()->orb_core () 
    ); 
   
  TAO_Collocated_Skeleton collocated_skel; 
  TAO_Abstract_ServantBase *servant = 0; 
   
  if (strategy == TAO::TAO_CS_THRU_POA_STRATEGY) 
    { 
      servant_upcall.prepare_for_upcall ( 
          obj->_stubobj ()->object_key (), 
          op, 
          forward_obj 
          ACE_ENV_ARG_PARAMETER 
        ); 
      ACE_CHECK; 
       
      servant_upcall.pre_invoke_collocated_request ( 
          ACE_ENV_SINGLE_ARG_PARAMETER 
        ); 
      ACE_CHECK; 
       
      servant = servant_upcall.servant (); 
    } 
  else 
    { 
      servant = obj->_servant (); 
    } 
   
  int status = servant->_find (op, 
                               collocated_skel, 
                               strategy, 
                               op_len); 
   
  if (status == -1) 
    { 
      ACE_THROW (CORBA::BAD_OPERATION ()); 
    } 
   
  ACE_TRY 
    { 
      collocated_skel (servant, 
                       args, 
                       num_args 
                       ACE_ENV_ARG_PARAMETER); 
      ACE_TRY_CHECK; 
    } 
#if (TAO_HAS_MINIMUM_CORBA == 0) 
  ACE_CATCH (PortableServer::ForwardRequest, forward_request) 
    { 
      forward_obj = 
        CORBA::Object::_duplicate (forward_request.forward_reference.in ()); 
      return; 
    } 
#else 
  ACE_CATCHANY 
    { 
      ACE_UNUSED_ARG (forward_obj); 
      ACE_RE_THROW; 
    } 
#endif /* TAO_HAS_MINIMUM_CORBA */ 
  ACE_ENDTRY; 
  ACE_CHECK; 
} 
 
// 
//        End Strategized Proxy Broker Implementation 
/////////////////////////////////////////////////////////////////////// 
 
// TAO_IDL - Generated from 
// e:\ace_wrappers\tao\tao_idl\be\be_visitor_interface/interface_ss.cpp:631 
 
TAO::Collocation_Proxy_Broker * 
_TAO_Messenger_Proxy_Broker_Factory_function (CORBA::Object_ptr) 
{ 
  return 
    ::_TAO_Messenger_Strategized_Proxy_Broker::the_TAO_Messenger_Strategized_Proxy_Broker (); 
} 
 
int 
_TAO_Messenger_Proxy_Broker_Factory_Initializer (size_t) 
{ 
  _TAO_Messenger_Proxy_Broker_Factory_function_pointer =  
    _TAO_Messenger_Proxy_Broker_Factory_function; 
   
  return 0; 
} 
 
static int 
_TAO_Messenger_Proxy_Broker_Stub_Factory_Initializer_Scarecrow = 
  _TAO_Messenger_Proxy_Broker_Factory_Initializer ( 
      ACE_reinterpret_cast ( 
          size_t, 
          _TAO_Messenger_Proxy_Broker_Factory_Initializer 
        ) 
    ); 
 
 
/////////////////////////////////////////////////////////////////////// 
//                 ThruPOA Proxy  Implementation 
// 
 
// TAO_IDL - Generated from 
// e:\ace_wrappers\tao\tao_idl\be\be_visitor_interface/thru_poa_proxy_impl_ss.cpp:37 
 
_TAO_Messenger_ThruPOA_Proxy_Impl::_TAO_Messenger_ThruPOA_Proxy_Impl (void) 
{} 
 
// ThruPOA Implementation of the IDL interface methods 
 
// TAO_IDL - Generated from  
// e:\ace_wrappers\tao\tao_idl\be\be_visitor_operation/thru_poa_proxy_impl_ss.cpp:52 
 
void 
_TAO_Messenger_ThruPOA_Proxy_Impl::send_message ( 
    TAO_Abstract_ServantBase *servant, 
    TAO::Argument ** args, 
    int  
    ACE_ENV_ARG_DECL 
  ) 
  ACE_THROW_SPEC (( 
    CORBA::SystemException 
  )) 
{ 
  ((TAO::Arg_Traits::ret_val *) args[0])->arg () = 
    ACE_reinterpret_cast ( 
        POA_Messenger_ptr, 
        servant->_downcast ( 
            "IDL:Messenger:1.0" 
          ) 
      )->send_message ( 
          ((TAO::Arg_Traits::in_arg_val *) args[1])->arg (), 
          ((TAO::Arg_Traits::in_arg_val *) args[2])->arg (), 
          ((TAO::Arg_Traits::inout_arg_val *) args[3])->arg () 
          ACE_ENV_ARG_PARAMETER 
        ); 
  ACE_CHECK; 
} 
 
// 
//           End ThruPOA Proxy Implementation 
/////////////////////////////////////////////////////////////////////// 
 
// TAO_IDL - Generated from  
// e:\ace_wrappers\tao\tao_idl\be\be_visitor_interface/interface_ss.cpp:97 
 
POA_Messenger::POA_Messenger (void) 
{ 
  this->optable_ = &tao_Messenger_optable; 
} 
 
POA_Messenger::POA_Messenger (const POA_Messenger& rhs) 
  : TAO_Abstract_ServantBase (rhs), 
    TAO_ServantBase (rhs) 
{ 
} 
 
POA_Messenger::~POA_Messenger (void) 
{ 
} 
 
// TAO_IDL - Generated from  
// e:\ace_wrappers\tao\tao_idl\be\be_visitor_operation/operation_ss.cpp:98 
 
void POA_Messenger::send_message_skel ( 
    TAO_ServerRequest &_tao_server_request, 
    void *_tao_servant, 
    void *_tao_servant_upcall 
    ACE_ENV_ARG_DECL 
  ) 
{ 
    TAO_InputCDR &_tao_in = _tao_server_request.incoming (); 
POA_Messenger *_tao_impl = 
    ACE_static_cast ( 
        POA_Messenger *, 
        _tao_servant 
      ); 
  CORBA::Boolean _tao_retval = 0; 
  CORBA::String_var user_name; 
  CORBA::String_var subject; 
  CORBA::String_var message; 
   
  if (!( 
      (_tao_in >> user_name.out ()) && 
      (_tao_in >> subject.out ()) && 
      (_tao_in >> message.out ()) 
      )) 
    { 
      TAO_InputCDR::throw_skel_exception (errno ACE_ENV_ARG_PARAMETER); 
      ACE_CHECK; 
    } 
   
#if (TAO_HAS_INTERCEPTORS == 1) 
  TAO_Object_Adapter::Servant_Upcall *_tao_upcall = 
    ACE_static_cast ( 
        TAO_Object_Adapter::Servant_Upcall *, 
        _tao_servant_upcall 
      ); 
     
  TAO_ServerRequestInterceptor_Adapter _tao_vfr ( 
      _tao_server_request.orb_core ()->server_request_interceptors (), 
      _tao_server_request.interceptor_count () 
    ); 
   
  TAO_ServerRequestInfo_Messenger_send_message _tao_ri ( 
      _tao_server_request, 
      _tao_upcall, 
      _tao_impl, 
       
      user_name.in (), 
       
      subject.in (), 
       
      message.inout () 
    ); 
   
  ACE_TRY 
    { 
      { 
        TAO_PICurrent_Guard _tao_pi_guard (_tao_ri.server_request (), 
                                           1  /* Copy TSC to RSC */); 
         
        _tao_vfr.receive_request (&_tao_ri ACE_ENV_ARG_PARAMETER); 
        ACE_TRY_CHECK; 
         
        if (!_tao_vfr.location_forwarded ()) 
          { 
#endif /* TAO_HAS_INTERCEPTORS */ 
            _tao_retval =  
              _tao_impl->send_message ( 
                  user_name.in (), 
                   
                  subject.in (), 
                   
                  message.inout () 
                ); 
             
#if (TAO_HAS_INTERCEPTORS == 1) 
          } 
      } 
       
      if (!_tao_vfr.location_forwarded ()) 
        { 
          CORBA::Boolean _tao_retval_info = _tao_retval; 
          _tao_ri.result (_tao_retval_info); 
          _tao_ri.reply_status (PortableInterceptor::SUCCESSFUL); 
          _tao_vfr.send_reply (&_tao_ri ACE_ENV_ARG_PARAMETER); 
          ACE_TRY_CHECK; 
        } 
    } 
  ACE_CATCHANY 
    { 
      _tao_ri.exception (&ACE_ANY_EXCEPTION); 
      _tao_vfr.send_exception ( 
          &_tao_ri 
          ACE_ENV_ARG_PARAMETER 
        ); 
      ACE_TRY_CHECK; 
       
      PortableInterceptor::ReplyStatus _tao_status = 
        _tao_ri.reply_status (ACE_ENV_SINGLE_ARG_PARAMETER); 
      ACE_TRY_CHECK; 
       
      if (_tao_status == PortableInterceptor::SYSTEM_EXCEPTION 
          || _tao_status == PortableInterceptor::USER_EXCEPTION) 
        { 
          ACE_RE_THROW; 
        } 
    } 
   
# if defined (ACE_HAS_EXCEPTIONS) \ 
  && defined (ACE_HAS_BROKEN_UNEXPECTED_EXCEPTIONS) 
  ACE_CATCHALL 
    { 
      CORBA::UNKNOWN ex; 
       
      _tao_ri.exception (&ex); 
      _tao_vfr.send_exception ( 
          &_tao_ri 
          ACE_ENV_ARG_PARAMETER 
        ); 
      ACE_TRY_CHECK; 
       
      PortableInterceptor::ReplyStatus _tao_status = 
        _tao_ri.reply_status (ACE_ENV_SINGLE_ARG_PARAMETER); 
      ACE_TRY_CHECK; 
       
      if (_tao_status == PortableInterceptor::SYSTEM_EXCEPTION) 
        ACE_TRY_THROW (ex); 
    } 
# endif  /* ACE_HAS_EXCEPTIONS && ACE_HAS_BROKEN_UNEXPECTED_EXCEPTIONS */ 
  ACE_ENDTRY; 
  ACE_CHECK; 
#endif /* TAO_HAS_INTERCEPTORS */ 
   
  _tao_server_request.init_reply (); 
#if (TAO_HAS_INTERCEPTORS == 1) 
  if (!_tao_vfr.location_forwarded ()) 
    { 
#endif /* TAO_HAS_INTERCEPTORS */ 
      TAO_OutputCDR &_tao_out = _tao_server_request.outgoing (); 
       
      if (!( 
          (_tao_out << CORBA::Any::from_boolean (_tao_retval)) && 
          (_tao_out << message.in ()) 
          )) 
        { 
          TAO_OutputCDR::throw_skel_exception (errno ACE_ENV_ARG_PARAMETER); 
          ACE_CHECK; 
        } 
#if (TAO_HAS_INTERCEPTORS == 1) 
    } 
#endif /* TAO_HAS_INTERCEPTORS */ 
   
   
  // In case _tao_servant_upcall is not used in this function 
  ACE_UNUSED_ARG (_tao_servant_upcall); 
} 
 
// TAO_IDL - Generated from  
// e:\ace_wrappers\tao\tao_idl\be\be_visitor_interface/interface_ss.cpp:162 
 
void POA_Messenger::_is_a_skel ( 
    TAO_ServerRequest &_tao_server_request,  
    void * _tao_servant, 
    void * /* Servant_Upcall */ 
    ACE_ENV_ARG_DECL 
  ) 
{ 
  TAO_InputCDR &_tao_in = _tao_server_request.incoming (); 
   
  POA_Messenger *_tao_impl = 
    (POA_Messenger *) _tao_servant; 
   
  CORBA::Boolean _tao_retval = 0; 
  CORBA::String_var value; 
   
  if (!(_tao_in >> value.out ())) 
    { 
      ACE_THROW (CORBA::MARSHAL ()); 
    } 
   
  _tao_retval = _tao_impl->_is_a (value.in () ACE_ENV_ARG_PARAMETER); 
  ACE_CHECK; 
   
  _tao_server_request.init_reply (); 
  TAO_OutputCDR &_tao_out = _tao_server_request.outgoing (); 
   
  if (!(_tao_out << CORBA::Any::from_boolean (_tao_retval))) 
    { 
      ACE_THROW (CORBA::MARSHAL ()); 
    } 
} 
 
void POA_Messenger::_non_existent_skel ( 
    TAO_ServerRequest &_tao_server_request,  
    void * _tao_servant, 
    void * /* Servant_Upcall */ 
    ACE_ENV_ARG_DECL 
  ) 
{ 
  POA_Messenger *_tao_impl = 
    (POA_Messenger *) _tao_servant; 
   
  CORBA::Boolean _tao_retval = 
    _tao_impl->_non_existent (ACE_ENV_SINGLE_ARG_PARAMETER); 
  ACE_CHECK; 
   
  _tao_server_request.init_reply (); 
  TAO_OutputCDR &_tao_out = _tao_server_request.outgoing (); 
   
  if (!(_tao_out << CORBA::Any::from_boolean (_tao_retval))) 
    { 
      ACE_THROW (CORBA::MARSHAL ()); 
    } 
} 
 
void POA_Messenger::_interface_skel ( 
    TAO_ServerRequest &_tao_server_request,  
    void * _tao_servant, 
    void * /* Servant_Upcall */ 
    ACE_ENV_ARG_DECL 
  ) 
{ 
  TAO_IFR_Client_Adapter *_tao_adapter = 
    ACE_Dynamic_Service::instance ( 
        TAO_ORB_Core::ifr_client_adapter_name () 
      ); 
     
  if (_tao_adapter == 0) 
    { 
      ACE_THROW (CORBA::INTF_REPOS ()); 
    } 
   
  POA_Messenger *_tao_impl = 
    (POA_Messenger *) _tao_servant; 
   
  CORBA::InterfaceDef_ptr _tao_retval =  
    _tao_impl->_get_interface (ACE_ENV_SINGLE_ARG_PARAMETER); 
  ACE_CHECK; 
   
  _tao_server_request.init_reply (); 
  TAO_OutputCDR &_tao_out = _tao_server_request.outgoing (); 
   
  CORBA::Boolean _tao_result = 
    _tao_adapter->interfacedef_cdr_insert ( 
        _tao_out, 
        _tao_retval 
      ); 
   
  _tao_adapter->dispose (_tao_retval); 
   
  if (_tao_result == 0) 
    { 
      ACE_THROW (CORBA::MARSHAL ()); 
    } 
} 
 
void POA_Messenger::_component_skel ( 
    TAO_ServerRequest &_tao_server_request,  
    void * _tao_object_reference, 
    void * /* Servant_Upcall */ 
    ACE_ENV_ARG_DECL 
  ) 
{ 
  POA_Messenger *_tao_impl = 
    (POA_Messenger *) _tao_object_reference; 
   
  CORBA::Object_var _tao_retval = 
    _tao_impl->_get_component (ACE_ENV_SINGLE_ARG_PARAMETER); 
  ACE_CHECK; 
   
  _tao_server_request.init_reply (); 
  TAO_OutputCDR &_tao_out = _tao_server_request.outgoing (); 
   
  if (!(_tao_out << _tao_retval.in ())) 
    { 
      ACE_THROW (CORBA::MARSHAL ()); 
    } 
} 
 
CORBA::Boolean POA_Messenger::_is_a ( 
    const char* value 
    ACE_ENV_ARG_DECL_NOT_USED 
  ) 
{ 
  if ( 
      !ACE_OS::strcmp ( 
          (char *)value, 
          "IDL:Messenger:1.0" 
        ) || 
      !ACE_OS::strcmp ( 
          (char *)value, 
          "IDL:omg.org/CORBA/Object:1.0" 
        ) 
     ) 
    { 
      return 1; 
    } 
  else 
    { 
      return 0; 
    } 
} 
 
void* POA_Messenger::_downcast ( 
    const char* logical_type_id 
  ) 
{ 
  if (ACE_OS::strcmp (logical_type_id, 
                      "IDL:Messenger:1.0") == 0) 
    { 
      return ACE_static_cast (POA_Messenger_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; 
} 
 
const char* POA_Messenger::_interface_repository_id (void) const 
{ 
  return "IDL:Messenger:1.0"; 
} 
 
// TAO_IDL - Generated from 
// e:\ace_wrappers\tao\tao_idl\be\be_visitor_interface/interface_ss.cpp:567 
 
void POA_Messenger::_dispatch ( 
    TAO_ServerRequest &req, 
    void *servant_upcall 
    ACE_ENV_ARG_DECL 
  ) 
{ 
  this->synchronous_upcall_dispatch (req, 
                                     servant_upcall, 
                                     this 
                                     ACE_ENV_ARG_PARAMETER); 
} 
 
// TAO_IDL - Generated from 
// e:\ace_wrappers\tao\tao_idl\be\be_visitor_interface/interface_ss.cpp:509 
 
Messenger * 
POA_Messenger::_this (ACE_ENV_SINGLE_ARG_DECL) 
{ 
  TAO_Stub *stub = this->_create_stub (ACE_ENV_SINGLE_ARG_PARAMETER); 
  ACE_CHECK_RETURN (0); 
   
  TAO_Stub_Auto_Ptr safe_stub (stub); 
  CORBA::Object_ptr tmp = CORBA::Object::_nil (); 
   
  if (stub->servant_orb_var ()->orb_core ()->optimize_collocation_objects ()) 
    { 
      ACE_NEW_RETURN ( 
          tmp, 
          CORBA::Object (stub, 1, this), 
          0 
        ); 
    } 
  else 
    { 
      ACE_NEW_RETURN ( 
          tmp, 
          CORBA::Object (stub, 0, this), 
          0 
        ); 
    } 
   
  CORBA::Object_var obj = tmp; 
  (void) safe_stub.release (); 
   
  typedef ::Messenger STUB_SCOPED_NAME; 
  return 
    TAO::Narrow_Utils::unchecked_narrow ( 
        obj.in (), 
        _TAO_Messenger_Proxy_Broker_Factory_function_pointer 
      ); 
} 
 
#endif /* ifndef */