00001 // -*- C++ -*- 00002 00003 //============================================================================= 00004 /** 00005 * @file ORT_Adapter.h 00006 * 00007 * ORT_Adapter.h,v 1.8 2006/03/10 07:19:13 jtc Exp 00008 * 00009 * @author Johnny Willemsen <jwillemsen@remedy.nl> 00010 */ 00011 //============================================================================= 00012 #ifndef TAO_ORT_ADAPTER_H 00013 #define TAO_ORT_ADAPTER_H 00014 00015 #include /**/ "ace/pre.h" 00016 00017 #include "tao/PortableServer/portableserver_export.h" 00018 00019 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00020 # pragma once 00021 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00022 00023 #include "tao/SystemException.h" 00024 #include "tao/PI_ForwardC.h" 00025 #include "ace/Service_Object.h" 00026 #include "ace/Array_Base.h" 00027 00028 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00029 00030 namespace CORBA 00031 { 00032 class Object; 00033 typedef Object *Object_ptr; 00034 } 00035 00036 namespace PortableInterceptor 00037 { 00038 class ObjectReferenceTemplate; 00039 class ObjectReferenceFactory; 00040 } 00041 00042 namespace PortableServer 00043 { 00044 class POA; 00045 typedef POA* POA_ptr; 00046 } 00047 00048 namespace TAO 00049 { 00050 /** 00051 * @class ORT_Adapter 00052 * 00053 * @brief ORT_Adapter 00054 * 00055 * Class that offers an interface to the POA to load and manipulate 00056 * ORT library. 00057 */ 00058 class TAO_PortableServer_Export ORT_Adapter 00059 : public ACE_Service_Object 00060 { 00061 public: 00062 /// Activate the ORT library 00063 virtual int activate (const char *server_id, 00064 const char *orb_id, 00065 PortableInterceptor::AdapterName *, 00066 PortableServer::POA_ptr poa 00067 ACE_ENV_ARG_DECL) = 0; 00068 00069 /// Set a different ort_factory to be used. 00070 virtual int set_obj_ref_factory ( 00071 PortableInterceptor::ObjectReferenceFactory *current_factory 00072 ACE_ENV_ARG_DECL_WITH_DEFAULTS) = 0; 00073 00074 /// Accessor methods to ObjectReferenceTemplate template 00075 virtual PortableInterceptor::ObjectReferenceTemplate * 00076 get_adapter_template (void) = 0; 00077 00078 /// Accessor methods to PortableInterceptor::ObjectReferenceFactory 00079 virtual PortableInterceptor::ObjectReferenceFactory * 00080 get_obj_ref_factory (void) = 0; 00081 00082 /// Release any references on @c ObjectReferenceTemplate @a t. 00083 virtual void release ( 00084 PortableInterceptor::ObjectReferenceTemplate * t) = 0; 00085 00086 /** 00087 * @name PortableInterceptor::ObjectReferenceFactory Methods 00088 * 00089 * Methods required by the 00090 * PortableInterceptor::ObjectReferenceFactory ValueType. 00091 * 00092 * @todo 00093 * @@ Johnny, we won't be needing the exception specification 00094 * below for long. Once bug 1852 is fixed, we can the 00095 * exception specification and the "tao/SystemException.h" 00096 * include above. 00097 */ 00098 //@{ 00099 virtual CORBA::Object_ptr make_object ( 00100 const char * repository_id, 00101 const PortableInterceptor::ObjectId & id 00102 ACE_ENV_ARG_DECL_WITH_DEFAULTS) 00103 ACE_THROW_SPEC (( 00104 CORBA::SystemException 00105 )) = 0; 00106 //@} 00107 }; 00108 00109 typedef 00110 ACE_Array_Base<PortableInterceptor::ObjectReferenceTemplate*> ORT_Array; 00111 00112 } 00113 00114 TAO_END_VERSIONED_NAMESPACE_DECL 00115 00116 #include /**/ "ace/post.h" 00117 #endif /* TAO_ORT_ADAPTER_H */