00001
00002
00003 #include "tao/DynamicInterface/Dynamic_Adapter_Impl.h"
00004
00005 ACE_RCSID(DynamicInterface, TAO_Dynamic_Adapter_Impl, "Dynamic_Adapter_Impl.cpp,v 1.15 2006/03/10 07:19:08 jtc Exp")
00006
00007 #include "tao/DynamicInterface/Request.h"
00008 #include "tao/DynamicInterface/Server_Request.h"
00009 #include "tao/ORB_Core.h"
00010 #include "tao/Exception.h"
00011
00012 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00013
00014 TAO_Dynamic_Adapter_Impl::TAO_Dynamic_Adapter_Impl (void)
00015 {
00016 }
00017
00018 TAO_Dynamic_Adapter_Impl::~TAO_Dynamic_Adapter_Impl (void)
00019 {
00020 }
00021
00022 void
00023 TAO_Dynamic_Adapter_Impl::create_request (
00024 CORBA::Object_ptr obj,
00025 CORBA::ORB_ptr orb,
00026 const char *operation,
00027 CORBA::NVList_ptr arg_list,
00028 CORBA::NamedValue_ptr result,
00029 CORBA::ExceptionList_ptr exceptions,
00030 CORBA::Request_ptr &request,
00031 CORBA::Flags req_flags
00032 ACE_ENV_ARG_DECL
00033 )
00034 {
00035 ACE_NEW_THROW_EX (request,
00036 CORBA::Request (obj,
00037 orb,
00038 operation,
00039 arg_list,
00040 result,
00041 req_flags,
00042 exceptions
00043 ACE_ENV_ARG_PARAMETER),
00044 CORBA::NO_MEMORY (
00045 CORBA::SystemException::_tao_minor_code (
00046 TAO::VMCID,
00047 ENOMEM
00048 ),
00049 CORBA::COMPLETED_MAYBE
00050 ));
00051 }
00052
00053 CORBA::Request_ptr
00054 TAO_Dynamic_Adapter_Impl::request (CORBA::Object_ptr obj,
00055 CORBA::ORB_ptr orb,
00056 const char *operation
00057 ACE_ENV_ARG_DECL)
00058 {
00059 CORBA::Request_ptr req = CORBA::Request::_nil ();
00060 ACE_NEW_THROW_EX (req,
00061 CORBA::Request (obj,
00062 orb,
00063 operation
00064 ACE_ENV_ARG_PARAMETER),
00065 CORBA::NO_MEMORY (
00066 CORBA::SystemException::_tao_minor_code (
00067 TAO::VMCID,
00068 ENOMEM
00069 ),
00070 CORBA::COMPLETED_MAYBE
00071 ));
00072 ACE_CHECK_RETURN (CORBA::Request::_nil ());
00073
00074 return req;
00075 }
00076
00077 CORBA::Boolean
00078 TAO_Dynamic_Adapter_Impl::context_is_nil (CORBA::Context_ptr ctx)
00079 {
00080 return ctx == 0;
00081 }
00082
00083 void
00084 TAO_Dynamic_Adapter_Impl::context_release (CORBA::Context_ptr ctx)
00085 {
00086 if (ctx != 0)
00087 {
00088 ctx->_decr_refcnt ();
00089 }
00090 }
00091
00092 CORBA::Boolean
00093 TAO_Dynamic_Adapter_Impl::request_is_nil (CORBA::Request_ptr req)
00094 {
00095 return req == 0;
00096 }
00097
00098 void
00099 TAO_Dynamic_Adapter_Impl::request_release (CORBA::Request_ptr req)
00100 {
00101 if (req != 0)
00102 {
00103 req->_decr_refcnt ();
00104 }
00105 }
00106
00107 CORBA::Boolean
00108 TAO_Dynamic_Adapter_Impl::server_request_is_nil (CORBA::ServerRequest_ptr req)
00109 {
00110 return req == 0;
00111 }
00112
00113 void
00114 TAO_Dynamic_Adapter_Impl::server_request_release (CORBA::ServerRequest_ptr req)
00115 {
00116 if (req != 0)
00117 {
00118 req->_decr_refcnt ();
00119 }
00120 }
00121
00122 void
00123 TAO_Dynamic_Adapter_Impl::create_exception_list (
00124 CORBA::ExceptionList_ptr &list
00125 ACE_ENV_ARG_DECL
00126 )
00127 {
00128 ACE_NEW_THROW_EX (list,
00129 CORBA::ExceptionList,
00130 CORBA::NO_MEMORY (
00131 CORBA::SystemException::_tao_minor_code (
00132 TAO::VMCID,
00133 ENOMEM
00134 ),
00135 CORBA::COMPLETED_NO
00136 ));
00137 }
00138
00139 int
00140 TAO_Dynamic_Adapter_Impl::Initializer (void)
00141 {
00142 TAO_ORB_Core::dynamic_adapter_name ("Concrete_Dynamic_Adapter");
00143 return ACE_Service_Config::process_directive (ace_svc_desc_TAO_Dynamic_Adapter_Impl);
00144 }
00145
00146 TAO_END_VERSIONED_NAMESPACE_DECL
00147
00148 ACE_STATIC_SVC_DEFINE (
00149 TAO_Dynamic_Adapter_Impl,
00150 ACE_TEXT ("Concrete_Dynamic_Adapter"),
00151 ACE_SVC_OBJ_T,
00152 &ACE_SVC_NAME (TAO_Dynamic_Adapter_Impl),
00153 ACE_Service_Type::DELETE_THIS | ACE_Service_Type::DELETE_OBJ,
00154 0
00155 )
00156
00157 ACE_FACTORY_DEFINE (TAO_DynamicInterface, TAO_Dynamic_Adapter_Impl)