diff options
47 files changed, 802 insertions, 466 deletions
diff --git a/TAO/tao/Bind_Dispatcher_Guard.h b/TAO/tao/Bind_Dispatcher_Guard.h index 6873503f737..e4c992b8ab6 100644 --- a/TAO/tao/Bind_Dispatcher_Guard.h +++ b/TAO/tao/Bind_Dispatcher_Guard.h @@ -42,8 +42,10 @@ public: NO_UNBIND }; - /// Set and get status + /// Get status int status (void) const; + + /// Set status void status (int status); private: diff --git a/TAO/tao/ClientRequestInfo.h b/TAO/tao/ClientRequestInfo.h index 15f06bcc7ef..1b503b31476 100644 --- a/TAO/tao/ClientRequestInfo.h +++ b/TAO/tao/ClientRequestInfo.h @@ -240,10 +240,8 @@ private: }; - // ------------------------------------------------------------------- - /** * @class TAO_ClientRequestInfo_Guard * @@ -278,7 +276,6 @@ private: }; - # if defined (__ACE_INLINE__) # include "ClientRequestInfo.inl" # endif /* __ACE_INLINE__ */ diff --git a/TAO/tao/ClientRequestInfo_i.h b/TAO/tao/ClientRequestInfo_i.h index 55ac729578c..aa8e320735b 100644 --- a/TAO/tao/ClientRequestInfo_i.h +++ b/TAO/tao/ClientRequestInfo_i.h @@ -29,8 +29,9 @@ #if (TAO_HAS_INTERCEPTORS == 1) #include "Invocation_Utils.h" -#include "PICurrent.h" +#include "PICurrent_Impl.h" #include "PICurrent_Copy_Callback.h" +#include "PIForwardRequestC.h" class TAO_Service_Context; @@ -45,6 +46,19 @@ namespace CORBA typedef AbstractBase *AbstractBase_ptr; } +namespace Dynamic +{ + class ParameterList; + class ExceptionList; + typedef CORBA::StringSeq RequestContext; + typedef CORBA::StringSeq ContextList; +} + +namespace Messaging +{ + typedef CORBA::Short SyncScope; +} + /** * @class TAO_ClientRequestInfo_i * diff --git a/TAO/tao/ClientRequestInfo_i.inl b/TAO/tao/ClientRequestInfo_i.inl index 877493b58dd..3dbe119d3fd 100644 --- a/TAO/tao/ClientRequestInfo_i.inl +++ b/TAO/tao/ClientRequestInfo_i.inl @@ -3,6 +3,7 @@ // $Id$ #include "SystemException.h" +#include "PortableInterceptorC.h" ACE_INLINE void TAO_ClientRequestInfo_i::exception (CORBA::Exception *exception) diff --git a/TAO/tao/ClientRequestInterceptor.pidl b/TAO/tao/ClientRequestInterceptor.pidl index 48446e792f6..f12487fb354 100644 --- a/TAO/tao/ClientRequestInterceptor.pidl +++ b/TAO/tao/ClientRequestInterceptor.pidl @@ -39,7 +39,7 @@ module PortableInterceptor { local interface ClientRequestInterceptor : Interceptor { - void send_request (in ClientRequestInfo ri) raises (ForwardRequest); + void send_request (in ClientRequestInfo ri) raises (ForwardRequest); void send_poll (in ClientRequestInfo ri); void receive_reply (in ClientRequestInfo ri); void receive_exception (in ClientRequestInfo ri) raises (ForwardRequest); diff --git a/TAO/tao/ClientRequestInterceptor_Adapter.cpp b/TAO/tao/ClientRequestInterceptor_Adapter.cpp index 9b5ab09ae81..16a2be5b29f 100644 --- a/TAO/tao/ClientRequestInterceptor_Adapter.cpp +++ b/TAO/tao/ClientRequestInterceptor_Adapter.cpp @@ -9,6 +9,7 @@ #include "ClientRequestInfo.h" #include "Invocation_Base.h" #include "ORB_Core.h" +#include "PortableInterceptorC.h" ACE_RCSID (tao, ClientInterceptorAdapter, @@ -164,8 +165,8 @@ namespace TAO } void - ClientRequestInterceptor_Adapter:: receive_other (TAO_ClientRequestInfo_i *ri - ACE_ENV_ARG_DECL) + ClientRequestInterceptor_Adapter::receive_other (TAO_ClientRequestInfo_i *ri + ACE_ENV_ARG_DECL) { // This is an "ending" interception point so we only process the // interceptors pushed on to the flow stack. diff --git a/TAO/tao/ClientRequestInterceptor_Adapter.h b/TAO/tao/ClientRequestInterceptor_Adapter.h index a527b07cd0a..88610590725 100644 --- a/TAO/tao/ClientRequestInterceptor_Adapter.h +++ b/TAO/tao/ClientRequestInterceptor_Adapter.h @@ -30,8 +30,8 @@ #if TAO_HAS_INTERCEPTORS == 1 -#include "Interceptor_List.h" #include "ClientRequestInterceptorC.h" +#include "Interceptor_List.h" namespace TAO { diff --git a/TAO/tao/CodecFactory.mpc b/TAO/tao/CodecFactory.mpc new file mode 100644 index 00000000000..0a9575ce991 --- /dev/null +++ b/TAO/tao/CodecFactory.mpc @@ -0,0 +1,33 @@ +//$Id$ +project : taolib, core { + sharedname = TAO_CodecFactory + dynamicflags = TAO_CODECFACTORY_BUILD_DLL + + Source_Files { + CodecFactory + } + + Header_Files { + CodecFactory + } + + Inline_Files { + CodecFactory + } + + Template_Files { + CodecFactory + } + + Resource_Files { + CodecFactory + } + + PIDL_Files { + CodecFactory + } + + Pkgconfig_Files { + CodecFactory/TAO_CodecFactory.pc.in + } +} diff --git a/TAO/tao/CDR_Encaps_Codec.cpp b/TAO/tao/CodecFactory/CDR_Encaps_Codec.cpp index 1d844f1c80d..35905f4fbe5 100644 --- a/TAO/tao/CDR_Encaps_Codec.cpp +++ b/TAO/tao/CodecFactory/CDR_Encaps_Codec.cpp @@ -4,16 +4,16 @@ #include "CDR_Encaps_Codec.h" -#include "CDR.h" -#include "OctetSeqC.h" -#include "Any.h" -#include "Any_Impl.h" -#include "TypeCode.h" -#include "Marshal.h" -#include "Any_Unknown_IDL_Type.h" -#include "SystemException.h" -#include "ORB_Constants.h" -#include "TypeCode_Constants.h" +#include "tao/CDR.h" +#include "tao/OctetSeqC.h" +#include "tao/Any.h" +#include "tao/Any_Impl.h" +#include "tao/TypeCode.h" +#include "tao/Marshal.h" +#include "tao/Any_Unknown_IDL_Type.h" +#include "tao/SystemException.h" +#include "tao/ORB_Constants.h" +#include "tao/TypeCode_Constants.h" #include "ace/Auto_Ptr.h" #include "ace/OS_NS_string.h" diff --git a/TAO/tao/CDR_Encaps_Codec.h b/TAO/tao/CodecFactory/CDR_Encaps_Codec.h index dd80b6eaba2..617f57d299d 100644 --- a/TAO/tao/CDR_Encaps_Codec.h +++ b/TAO/tao/CodecFactory/CDR_Encaps_Codec.h @@ -15,13 +15,14 @@ #include /**/ "ace/pre.h" -#include "IOP_CodecC.h" +#include "codecfactory_export.h" #if !defined (ACE_LACKS_PRAGMA_ONCE) # pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ -#include "LocalObject.h" +#include "tao/IOP_CodecC.h" +#include "tao/LocalObject.h" /** * @class TAO_CDR_Encaps_Codec @@ -39,7 +40,7 @@ * ORB core since it uses interpretive marshaling rather than compiled * marshaling. */ -class TAO_Export TAO_CDR_Encaps_Codec +class TAO_CodecFactory_Export TAO_CDR_Encaps_Codec : public virtual IOP::Codec, public virtual TAO_Local_RefCounted_Object { diff --git a/TAO/tao/CodecFactory/CodecFactory.cpp b/TAO/tao/CodecFactory/CodecFactory.cpp new file mode 100644 index 00000000000..646a88b28a2 --- /dev/null +++ b/TAO/tao/CodecFactory/CodecFactory.cpp @@ -0,0 +1,51 @@ +/* -*- C++ -*- */ + +// ================================================================= +/** + * @file CodecFactory.cpp + * + * $Id$ + * + * @author Johnny Willemsen <jwillemsen@remedy.nl> + * + */ +// ================================================================= + +#include "CodecFactory.h" +#include "CodecFactory_impl.h" + +#include "tao/ORB.h" +#include "tao/debug.h" + +ACE_RCSID (CodecFactory, + CodecFactory, + "$Id$") + +CORBA::Object_ptr +TAO_CodecFactory_Loader::create_object ( + CORBA::ORB_ptr orb, + int, + ACE_TCHAR *[] + ACE_ENV_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + CORBA::Object_ptr obj = CORBA::Object::_nil (); + ACE_NEW_RETURN (obj, + TAO_CodecFactory (orb->orb_core ()), + CORBA::Object::_nil ()); + return obj; +} + +int +TAO_CodecFactory_Loader::Initializer (void) +{ + return ACE_Service_Config::process_directive (ace_svc_desc_TAO_CodecFactory_Loader); +} + +ACE_STATIC_SVC_DEFINE (TAO_CodecFactory_Loader, + ACE_TEXT ("CodecFactory_Loader"), + ACE_SVC_OBJ_T, + &ACE_SVC_NAME (TAO_CodecFactory_Loader), + ACE_Service_Type::DELETE_THIS | ACE_Service_Type::DELETE_OBJ, + 0) +ACE_FACTORY_DEFINE (TAO_CodecFactory, TAO_CodecFactory_Loader) diff --git a/TAO/tao/CodecFactory/CodecFactory.h b/TAO/tao/CodecFactory/CodecFactory.h new file mode 100644 index 00000000000..2961204afbb --- /dev/null +++ b/TAO/tao/CodecFactory/CodecFactory.h @@ -0,0 +1,63 @@ +/* -*- C++ -*- */ + + +//============================================================================= +/** + * @file CodecFactory.h + * + * $Id$ + * + * @author Carlos O'Ryan <coryan@uci.edu> + */ +//============================================================================= + + +#ifndef TAO_CODECFACTORY_H +#define TAO_CODECFACTORY_H + +#include /**/ "ace/pre.h" + +#include "codecfactory_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/Object_Loader.h" +#include "ace/Service_Config.h" + +class TAO_CodecFactory_Export TAO_CodecFactory_Loader + : public TAO_Object_Loader +{ +public: + /// Creates a Codec factory and returns it. + virtual CORBA::Object_ptr create_object (CORBA::ORB_ptr orb, + int argc, + ACE_TCHAR *argv [] + ACE_ENV_ARG_DECL_NOT_USED) + ACE_THROW_SPEC ((CORBA::SystemException)); + + /// Used to force the initialization of the ORB code. + static int Initializer (void); +}; + +ACE_STATIC_SVC_DECLARE (TAO_CodecFactory_Loader) +ACE_FACTORY_DECLARE (TAO_CodecFactory, TAO_CodecFactory_Loader) + +#if defined(ACE_HAS_BROKEN_STATIC_CONSTRUCTORS) + +typedef int (*TAO_Module_Initializer) (void); + +static TAO_Module_Initializer +TAO_Requires_CodecFactory_Initializer = &TAO_CodecFactory_Loader::Initializer; + +#else + +static int +TAO_Requires_CodecFactory_Initializer = TAO_CodecFactory_Loader::Initializer (); + +#endif /* ACE_HAS_BROKEN_STATIC_CONSTRUCTORS */ + +#include /**/ "ace/post.h" + +#endif /* TAO_CODECFACTORY_H */ diff --git a/TAO/tao/CodecFactory.cpp b/TAO/tao/CodecFactory/CodecFactory_impl.cpp index ff1ba26d9f8..0a83515a15b 100644 --- a/TAO/tao/CodecFactory.cpp +++ b/TAO/tao/CodecFactory/CodecFactory_impl.cpp @@ -2,10 +2,10 @@ // // $Id$ -#include "CodecFactory.h" +#include "CodecFactory_impl.h" #include "CDR_Encaps_Codec.h" -#include "SystemException.h" -#include "ORB_Constants.h" +#include "tao/SystemException.h" +#include "tao/ORB_Constants.h" ACE_RCSID (TAO_CodecFactory, CodecFactory, diff --git a/TAO/tao/CodecFactory.h b/TAO/tao/CodecFactory/CodecFactory_impl.h index 9a08564f50d..4c897358bda 100644 --- a/TAO/tao/CodecFactory.h +++ b/TAO/tao/CodecFactory/CodecFactory_impl.h @@ -10,18 +10,19 @@ */ //============================================================================= -#ifndef TAO_CODEC_FACTORY_H -#define TAO_CODEC_FACTORY_H +#ifndef TAO_CODEC_FACTORY_IMPL_H +#define TAO_CODEC_FACTORY_IMPL_H #include /**/ "ace/pre.h" -#include "IOP_CodecC.h" +#include "codecfactory_export.h" #if !defined (ACE_LACKS_PRAGMA_ONCE) # pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ -#include "LocalObject.h" +#include "tao/LocalObject.h" +#include "tao/IOP_CodecC.h" // This is to remove "inherits via dominance" warnings from MSVC. // MSVC is being a little too paranoid. @@ -30,7 +31,6 @@ #pragma warning(disable:4250) #endif /* _MSC_VER */ - /** * @class TAO_CodecFactory * @@ -39,7 +39,7 @@ * This class can be used to create Codec (coder/decoder) of a given * type, such as a CDR encapsulation Codec. */ -class TAO_Export TAO_CodecFactory +class TAO_CodecFactory_Export TAO_CodecFactory : public virtual IOP::CodecFactory, public virtual TAO_Local_RefCounted_Object { @@ -79,4 +79,4 @@ private: #include /**/ "ace/post.h" -#endif /* TAO_CODEC_FACTORY_H */ +#endif /* TAO_CODEC_FACTORY_IMPL_H */ diff --git a/TAO/tao/CodecFactory/TAO_CodecFactory.pc.in b/TAO/tao/CodecFactory/TAO_CodecFactory.pc.in new file mode 100644 index 00000000000..81a384f3838 --- /dev/null +++ b/TAO/tao/CodecFactory/TAO_CodecFactory.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: TAO_CodecFactory +Description: TAO CodecFactory Library +Requires: TAO +Version: @VERSION@ +Libs: -L${libdir} -lTAO_CodecFactory +Cflags: -I${includedir} diff --git a/TAO/tao/CodecFactory/TAO_CodecFactory.rc b/TAO/tao/CodecFactory/TAO_CodecFactory.rc new file mode 100644 index 00000000000..a234c757563 --- /dev/null +++ b/TAO/tao/CodecFactory/TAO_CodecFactory.rc @@ -0,0 +1,30 @@ +#include "..\Version.h" + +1 VERSIONINFO + FILEVERSION TAO_MAJOR_VERSION,TAO_MINOR_VERSION,TAO_BETA_VERSION,0 + PRODUCTVERSION TAO_MAJOR_VERSION,TAO_MINOR_VERSION,TAO_BETA_VERSION,0 + FILEFLAGSMASK 0x3fL + FILEFLAGS 0x0L + FILEOS 0x4L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904B0" + BEGIN + VALUE "FileDescription", "CodecFactory\0" + VALUE "FileVersion", TAO_VERSION "\0" + VALUE "InternalName", "TAO_CodecFactoryDLL\0" + VALUE "LegalCopyright", "\0" + VALUE "LegalTrademarks", "\0" + VALUE "OriginalFilename", "TAO_CodecFactory.DLL\0" + VALUE "ProductName", "TAO\0" + VALUE "ProductVersion", TAO_VERSION "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END diff --git a/TAO/tao/CodecFactory/codecfactory_export.h b/TAO/tao/CodecFactory/codecfactory_export.h new file mode 100644 index 00000000000..7c93ff47968 --- /dev/null +++ b/TAO/tao/CodecFactory/codecfactory_export.h @@ -0,0 +1,40 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl +// ------------------------------ +#ifndef TAO_CODECFACTORY_EXPORT_H +#define TAO_CODECFACTORY_EXPORT_H + +#include "ace/config-all.h" + +#if defined (TAO_AS_STATIC_LIBS) +# if !defined (TAO_CODECFACTORY_HAS_DLL) +# define TAO_CODECFACTORY_HAS_DLL 0 +# endif /* ! TAO_CODECFACTORY_HAS_DLL */ +#else +# if !defined (TAO_CODECFACTORY_HAS_DLL) +# define TAO_CODECFACTORY_HAS_DLL 1 +# endif /* ! TAO_CODECFACTORY_HAS_DLL */ +#endif + +#if defined (TAO_CODECFACTORY_HAS_DLL) && (TAO_CODECFACTORY_HAS_DLL == 1) +# if defined (TAO_CODECFACTORY_BUILD_DLL) +# define TAO_CodecFactory_Export ACE_Proper_Export_Flag +# define TAO_CODECFACTORY_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define TAO_CODECFACTORY_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* TAO_CODECFACTORY_BUILD_DLL */ +# define TAO_CodecFactory_Export ACE_Proper_Import_Flag +# define TAO_CODECFACTORY_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define TAO_CODECFACTORY_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* TAO_CODECFACTORY_BUILD_DLL */ +#else /* TAO_CODECFACTORY_HAS_DLL == 1 */ +# define TAO_CodecFactory_Export +# define TAO_CODECFACTORY_SINGLETON_DECLARATION(T) +# define TAO_CODECFACTORY_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* TAO_CODECFACTORY_HAS_DLL == 1 */ + +#endif /* TAO_CODECFACTORY_EXPORT_H */ + +// End of auto generated file. diff --git a/TAO/tao/CodecFactory_ORBInitializer.cpp b/TAO/tao/CodecFactory_ORBInitializer.cpp deleted file mode 100644 index c39ec7142b9..00000000000 --- a/TAO/tao/CodecFactory_ORBInitializer.cpp +++ /dev/null @@ -1,52 +0,0 @@ -// -*- C++ -*- -// -// $Id$ - -#include "CodecFactory_ORBInitializer.h" -#include "CodecFactory.h" -#include "ORBInitInfo.h" -#include "SystemException.h" -#include "ORB_Constants.h" - -ACE_RCSID (TAO_CodecFactory, - CodecFactory_ORBInitializer, - "$Id$") - -void -TAO_CodecFactory_ORBInitializer::pre_init ( - PortableInterceptor::ORBInitInfo_ptr info - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ - TAO_ORBInitInfo_var tao_info = - TAO_ORBInitInfo::_narrow (info - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - TAO_ORB_Core * orb_core = tao_info->orb_core (); - - IOP::CodecFactory_ptr codec_factory; - ACE_NEW_THROW_EX (codec_factory, - TAO_CodecFactory (orb_core), - CORBA::NO_MEMORY ( - CORBA::SystemException::_tao_minor_code ( - 0, - ENOMEM), - CORBA::COMPLETED_NO)); - ACE_CHECK; - - IOP::CodecFactory_var cf = codec_factory; - - info->register_initial_reference ("CodecFactory", - codec_factory - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; -} - -void -TAO_CodecFactory_ORBInitializer::post_init ( - PortableInterceptor::ORBInitInfo_ptr - ACE_ENV_ARG_DECL_NOT_USED) - ACE_THROW_SPEC ((CORBA::SystemException)) -{ -} diff --git a/TAO/tao/CodecFactory_ORBInitializer.h b/TAO/tao/CodecFactory_ORBInitializer.h deleted file mode 100644 index f785a9f9df3..00000000000 --- a/TAO/tao/CodecFactory_ORBInitializer.h +++ /dev/null @@ -1,65 +0,0 @@ -// -*- C++ -*- - -//============================================================================= -/** - * @file CodecFactory_ORBInitializer.h - * - * $Id$ - * - * @author Ossama Othman <ossama@uci.edu> - */ -//============================================================================= - - -#ifndef TAO_CODEC_FACTORY_ORB_INITIALIZER_H -#define TAO_CODEC_FACTORY_ORB_INITIALIZER_H - -#include /**/ "ace/pre.h" - -#include "ORBInitializerC.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "LocalObject.h" - -// This is to remove "inherits via dominance" warnings from MSVC. -// MSVC is being a little too paranoid. -#if defined(_MSC_VER) -#pragma warning(push) -#pragma warning(disable:4250) -#endif /* _MSC_VER */ - - -/** - * @class TAO_CodecFactory_ORBInitializer - * - * @brief ORBInitializer for the CodecFactory support. - * - * This class simply registers the CodecFactory object with the ORB - * resolve_initial_references() mechanism. - */ -class TAO_Export TAO_CodecFactory_ORBInitializer - : public virtual PortableInterceptor::ORBInitializer, - public virtual TAO_Local_RefCounted_Object -{ -public: - - virtual void pre_init (PortableInterceptor::ORBInitInfo_ptr info - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual void post_init (PortableInterceptor::ORBInitInfo_ptr info - ACE_ENV_ARG_DECL_WITH_DEFAULTS) - ACE_THROW_SPEC ((CORBA::SystemException)); - -}; - -#if defined(_MSC_VER) -#pragma warning(pop) -#endif /* _MSC_VER */ - -#include /**/ "ace/post.h" - -#endif /* TAO_CODEC_FACTORY_ORB_INITIALIZER_H */ diff --git a/TAO/tao/Collocated_Invocation.cpp b/TAO/tao/Collocated_Invocation.cpp index a4e923f6fa0..135a1fb1b91 100644 --- a/TAO/tao/Collocated_Invocation.cpp +++ b/TAO/tao/Collocated_Invocation.cpp @@ -6,6 +6,9 @@ #include "Stub.h" #include "operation_details.h" +#if TAO_HAS_INTERCEPTORS == 1 +# include "PortableInterceptorC.h" +#endif /*TAO_HAS_INTERCEPTORS */ ACE_RCSID (tao, Collocated_Invocation, diff --git a/TAO/tao/IOP_Codec.pidl b/TAO/tao/IOP_Codec.pidl index 8ccee00dc53..d322ae98bc1 100644 --- a/TAO/tao/IOP_Codec.pidl +++ b/TAO/tao/IOP_Codec.pidl @@ -30,7 +30,7 @@ module IOP { - local interface Codec { + local interface Codec { exception InvalidTypeForEncoding {}; exception FormatMismatch {}; exception TypeMismatch {}; diff --git a/TAO/tao/IOP_IOR.pidl b/TAO/tao/IOP_IOR.pidl index 1ce9a4f3821..0901cc8e2fe 100644 --- a/TAO/tao/IOP_IOR.pidl +++ b/TAO/tao/IOP_IOR.pidl @@ -103,11 +103,10 @@ module IOP const ServiceId FT_GROUP_VERSION = 12; const ServiceId FT_REQUEST = 13; - // The following are not defined yet in the Unreliable Multicast - // InterORB Protocol (orbos/2001-11-08) - const ProfileId TAG_UIPMC = 0x54414f0c; // @@ Get real number - const ComponentId TAG_GROUP = 0x54414f03; // @@ Get real number - const ComponentId TAG_GROUP_IIOP = 0x54414f04; // @@ Get real number + // The following are defined in 03-01-11 + const ProfileId TAG_UIPMC = 3; + const ComponentId TAG_GROUP = 39; + const ComponentId TAG_GROUP_IIOP = 40; }; #pragma prefix "" diff --git a/TAO/tao/InterfaceDef.pidl b/TAO/tao/InterfaceDef.pidl index 81eacc638e7..63eb842b319 100644 --- a/TAO/tao/InterfaceDef.pidl +++ b/TAO/tao/InterfaceDef.pidl @@ -14,8 +14,6 @@ #ifndef TAO_CORBA_INTERFACEDEF_PIDL #define TAO_CORBA_INTERFACEDEF_PIDL -#include <InterfaceDef.pidl> - #pragma prefix "omg.org" module CORBA diff --git a/TAO/tao/Invocation_Base.cpp b/TAO/tao/Invocation_Base.cpp index 46caafc77e9..fd635d421f4 100644 --- a/TAO/tao/Invocation_Base.cpp +++ b/TAO/tao/Invocation_Base.cpp @@ -7,7 +7,8 @@ #include "SystemException.h" #if TAO_HAS_INTERCEPTORS == 1 -#include "RequestInfo_Util.h" +# include "PortableInterceptorC.h" +# include "RequestInfo_Util.h" #endif /*TAO_HAS_INTERCEPTORS*/ #if !defined (__ACE_INLINE__) diff --git a/TAO/tao/LocalObject.cpp b/TAO/tao/LocalObject.cpp index bba344b7c5a..f8e220097d3 100644 --- a/TAO/tao/LocalObject.cpp +++ b/TAO/tao/LocalObject.cpp @@ -208,6 +208,14 @@ CORBA::LocalObject::_validate_connection (CORBA::PolicyList_out #endif /* TAO_HAS_CORBA_MESSAGING == 1 */ +CORBA::ORB_ptr +CORBA::LocalObject::_get_orb (ACE_ENV_SINGLE_ARG_DECL) +{ + ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (CORBA::OMGVMCID | 8, + CORBA::COMPLETED_NO), + 0); +} + // **************************************************************** void diff --git a/TAO/tao/LocalObject.h b/TAO/tao/LocalObject.h index 662f1471ab8..c6d682b1ccd 100644 --- a/TAO/tao/LocalObject.h +++ b/TAO/tao/LocalObject.h @@ -168,6 +168,10 @@ namespace CORBA /// Decrement the reference count. virtual void _remove_ref (void); + virtual CORBA::ORB_ptr _get_orb ( + ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS + ); + // = TAO extensions /// Throws CORBA::NO_IMPLEMENT. diff --git a/TAO/tao/Messaging_PolicyValue.pidl b/TAO/tao/Messaging_PolicyValue.pidl index 722d37519d8..fcff2799c8b 100644 --- a/TAO/tao/Messaging_PolicyValue.pidl +++ b/TAO/tao/Messaging_PolicyValue.pidl @@ -36,7 +36,7 @@ module Messaging typedef sequence<PolicyValue> PolicyValueSeq; const IOP::ComponentId TAG_POLICIES = 2; - const IOP::ServiceId INVOCATION_POLICIES = 2; + const IOP::ServiceId INVOCATION_POLICIES = 7; }; #endif /* TAO_MESSAGING_POLICYVALUE_PIDL */ diff --git a/TAO/tao/Messaging_PolicyValueC.h b/TAO/tao/Messaging_PolicyValueC.h index 9ce2bf2c371..d9e4470aa96 100644 --- a/TAO/tao/Messaging_PolicyValueC.h +++ b/TAO/tao/Messaging_PolicyValueC.h @@ -70,57 +70,57 @@ namespace Messaging { - + // TAO_IDL - Generated from // be\be_type.cpp:258 - + struct PolicyValue; - + typedef TAO_Var_Var_T< PolicyValue > PolicyValue_var; - + typedef TAO_Out_T< PolicyValue, PolicyValue_var > PolicyValue_out; - + // TAO_IDL - Generated from // be\be_visitor_structure/structure_ch.cpp:52 - + struct TAO_Export PolicyValue { typedef PolicyValue_var _var_type; - + static void _tao_any_destructor (void *); CORBA::PolicyType ptype; CORBA::OctetSeq pvalue; }; - + // TAO_IDL - Generated from // be\be_visitor_typecode/typecode_decl.cpp:44 - + extern TAO_Export ::CORBA::TypeCode_ptr const _tc_PolicyValue; - + // TAO_IDL - Generated from // be\be_visitor_sequence/sequence_ch.cpp:101 #if !defined (_MESSAGING_POLICYVALUESEQ_CH_) #define _MESSAGING_POLICYVALUESEQ_CH_ - + class PolicyValueSeq; - + typedef TAO_VarSeq_Var_T< PolicyValueSeq, PolicyValue > PolicyValueSeq_var; - + typedef TAO_Seq_Out_T< PolicyValueSeq, @@ -128,7 +128,7 @@ namespace Messaging PolicyValue > PolicyValueSeq_out; - + class TAO_Export PolicyValueSeq : public TAO_Unbounded_Sequence< @@ -141,33 +141,33 @@ namespace Messaging PolicyValueSeq ( CORBA::ULong max, CORBA::ULong length, - PolicyValue* buffer, + PolicyValue* buffer, CORBA::Boolean release = 0 ); PolicyValueSeq (const PolicyValueSeq &); ~PolicyValueSeq (void); - + static void _tao_any_destructor (void *); - + typedef PolicyValueSeq_var _var_type; }; #endif /* end #if !defined */ - + // TAO_IDL - Generated from // be\be_visitor_typecode/typecode_decl.cpp:44 - + extern TAO_Export ::CORBA::TypeCode_ptr const _tc_PolicyValueSeq; - + // TAO_IDL - Generated from // be\be_visitor_constant/constant_ch.cpp:52 - + const IOP::ComponentId TAG_POLICIES = 2U; - + // TAO_IDL - Generated from // be\be_visitor_constant/constant_ch.cpp:52 - - const IOP::ServiceId INVOCATION_POLICIES = 2U; + + const IOP::ServiceId INVOCATION_POLICIES = 7U; // TAO_IDL - Generated from // be\be_visitor_module/module_ch.cpp:66 diff --git a/TAO/tao/ORB.cpp b/TAO/tao/ORB.cpp index 9f8f4f4bc17..b9ab6eb2a58 100644 --- a/TAO/tao/ORB.cpp +++ b/TAO/tao/ORB.cpp @@ -19,10 +19,10 @@ ACE_RCSID (tao, #include "ORBInitInfo.h" #include "ORBInitializer_Registry.h" #include "TAO_Singleton_Manager.h" +#include "Policy_Current.h" #include "Policy_Manager.h" #include "Valuetype_Adapter.h" #include "IFR_Client_Adapter.h" -#include "CodecFactory_ORBInitializer.h" #include "TypeCodeFactory_Adapter.h" #include "debug.h" #include "CDR.h" @@ -30,7 +30,8 @@ ACE_RCSID (tao, #include "default_environment.h" #if TAO_HAS_INTERCEPTORS == 1 -# include "PICurrent_ORBInitializer.h" /* @@ This should go away! */ +# include "PICurrent_Loader.h" /* @@ This should go away! */ +# include "PICurrent.h" /* @@ This should go away! */ #endif /* TAO_HAS_INTERCEPTORS == 1 */ #if !defined (__ACE_INLINE__) @@ -1133,6 +1134,11 @@ CORBA::ORB::resolve_initial_references (const char *name, else if (ACE_OS::strcmp (name, TAO_OBJID_TYPECODEFACTORY) == 0) return this->orb_core ()->resolve_typecodefactory (ACE_ENV_SINGLE_ARG_PARAMETER); + else if (ACE_OS::strcmp (name, TAO_OBJID_CODECFACTORY) == 0) + return this->orb_core ()->resolve_codecfactory (ACE_ENV_SINGLE_ARG_PARAMETER); + + else if (ACE_OS::strcmp (name, TAO_OBJID_PICurrent) == 0) + return this->orb_core ()->resolve_picurrent (ACE_ENV_SINGLE_ARG_PARAMETER); // ----------------------------------------------------------------- @@ -1349,51 +1355,6 @@ TAO::ORB::init_orb_globals (ACE_ENV_SINGLE_ARG_DECL) ACE_THROW (CORBA::INITIALIZE ()); } - - // Register the CodecFactory ORBInitializer. - PortableInterceptor::ORBInitializer_ptr tmp_cf_initializer; - ACE_NEW_THROW_EX (tmp_cf_initializer, - TAO_CodecFactory_ORBInitializer, - CORBA::NO_MEMORY ( - CORBA::SystemException::_tao_minor_code ( - 0, - ENOMEM), - CORBA::COMPLETED_NO)); - ACE_CHECK; - - PortableInterceptor::ORBInitializer_var cf_initializer = - tmp_cf_initializer; - - PortableInterceptor::register_orb_initializer (cf_initializer.in () - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - // ------------------------------------------------------------- - // @@ These ORB initializer instantiations should go away. They - // should be registered via the service configurator, for - // example. - -#if TAO_HAS_INTERCEPTORS == 1 - PortableInterceptor::ORBInitializer_ptr temp_pi_initializer = - PortableInterceptor::ORBInitializer::_nil (); - PortableInterceptor::ORBInitializer_var pi_initializer; - - // Register the PICurrent ORBInitializer. - ACE_NEW_THROW_EX (temp_pi_initializer, - TAO_PICurrent_ORBInitializer, - CORBA::NO_MEMORY ( - CORBA::SystemException::_tao_minor_code ( - 0, - ENOMEM), - CORBA::COMPLETED_NO)); - ACE_CHECK; - - pi_initializer = temp_pi_initializer; - - PortableInterceptor::register_orb_initializer (pi_initializer.in () - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; -#endif /* TAO_HAS_INTERCEPTORS == 1 */ } const ACE_CString & @@ -1658,7 +1619,10 @@ CORBA::ORB_init (int &argc, ACE_CHECK_RETURN (CORBA::ORB::_nil ()); #if TAO_HAS_INTERCEPTORS == 1 - oc->pi_current ()->initialize (orb_init_info_temp->slot_count ()); + TAO::PICurrent *pi = oc->pi_current (); + + if (pi != 0) + pi->initialize (orb_init_info_temp->slot_count ()); #endif /* TAO_HAS_INTERCEPTORS == 1 */ // Invalidate the ORBInitInfo instance to prevent future @@ -1697,8 +1661,6 @@ CORBA::ORB::object_to_string (CORBA::Object_ptr obj ACE_CHECK_RETURN (0); if (!CORBA::is_nil (obj) && obj->_is_local ()) - // @@ The CCM spec says one minor code, and the CORBA spec says - // another. Which is the correct one? ACE_THROW_RETURN (CORBA::MARSHAL (CORBA::OMGVMCID | 4, CORBA::COMPLETED_NO), 0); diff --git a/TAO/tao/ORBInitInfo.cpp b/TAO/tao/ORBInitInfo.cpp index a288a2f72ac..91ac3f57e7d 100644 --- a/TAO/tao/ORBInitInfo.cpp +++ b/TAO/tao/ORBInitInfo.cpp @@ -3,8 +3,11 @@ #include "ORBInitInfo.h" #include "ORB_Core.h" #include "ORB.h" -#include "CodecFactory.h" #include "SystemException.h" +#include "Object_Loader.h" + +#include "ace/Dynamic_Service.h" +#include "ace/Service_Config.h" #if TAO_HAS_INTERCEPTORS == 1 #include "PICurrent.h" @@ -117,21 +120,25 @@ TAO_ORBInitInfo::codec_factory (ACE_ENV_SINGLE_ARG_DECL) { if (CORBA::is_nil (this->codec_factory_.in ())) { - // A new instance must be allocated since the application code - // may have registered an ORBInitializer that requires a - // CodecFactory before the CodecFactory is itself registered - // with the ORB. - IOP::CodecFactory_ptr codec_factory; - ACE_NEW_THROW_EX (codec_factory, - TAO_CodecFactory (this->orb_core_), - CORBA::NO_MEMORY ( - CORBA::SystemException::_tao_minor_code ( - 0, - ENOMEM), - CORBA::COMPLETED_NO)); - ACE_CHECK_RETURN (IOP::CodecFactory::_nil ()); - - this->codec_factory_ = codec_factory; + TAO_Object_Loader *loader = + ACE_Dynamic_Service<TAO_Object_Loader>::instance ("CodecFactory_Loader"); + + if (loader == 0) + { + ACE_Service_Config::process_directive (ACE_TEXT("dynamic CodecFactory Service_Object *") + ACE_TEXT("TAO_CodecFactory:_make_TAO_CodecFactory_Loader()")); + loader = + ACE_Dynamic_Service<TAO_Object_Loader>::instance ("CodecFactory_Loader"); + } + + if (loader != 0) + { + CORBA::Object_ptr cf = + loader->create_object (this->orb_core_->orb (), 0, 0 ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN (IOP::CodecFactory::_nil ()); + + this->codec_factory_ = IOP::CodecFactory::_narrow (cf); + } } return IOP::CodecFactory::_duplicate (this->codec_factory_.in ()); @@ -351,11 +358,3 @@ const char* TAO_ORBInitInfo::_interface_repository_id (void) const return "IDL:TAO_ORBInitInfo:1.0"; } - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class TAO_Objref_Var_T<TAO_ORBInitInfo>; -template class TAO_Objref_Out_T<TAO_ORBInitInfo>; -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -# pragma instantiate TAO_Objref_Var_T<TAO_ORBInitInfo> -# pragma instantiate TAO_Objref_Out_T<TAO_ORBInitInfo> -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/tao/ORB_Core.cpp b/TAO/tao/ORB_Core.cpp index 15e3f8ff33b..af424e407d4 100644 --- a/TAO/tao/ORB_Core.cpp +++ b/TAO/tao/ORB_Core.cpp @@ -32,6 +32,11 @@ #include "Adapter.h" #include "GUIResource_Factory.h" +#if (TAO_HAS_CORBA_MESSAGING == 1) +#include "Policy_Manager.h" +#include "Policy_Current.h" +#endif /* TAO_HAS_CORBA_MESSAGING == 1 */ + #if (TAO_HAS_INTERCEPTORS == 1) # include "ClientRequestInfo.h" #endif /* TAO_HAS_INTERCEPTORS == 1 */ @@ -132,6 +137,7 @@ TAO_ORB_Core::TAO_ORB_Core (const char *orbid) use_implrepo_ (0), imr_endpoints_in_ior_ (1), typecode_factory_ (CORBA::Object::_nil ()), + codec_factory_ (CORBA::Object::_nil ()), dynany_factory_ (CORBA::Object::_nil ()), ior_manip_factory_ (CORBA::Object::_nil ()), ior_table_ (CORBA::Object::_nil ()), @@ -1189,6 +1195,8 @@ TAO_ORB_Core::fini (void) CORBA::release (this->typecode_factory_); + CORBA::release (this->codec_factory_); + CORBA::release (this->dynany_factory_); CORBA::release (this->ior_manip_factory_); @@ -2000,6 +2008,7 @@ TAO_ORB_Core::shutdown (CORBA::Boolean wait_for_completion this->object_ref_table_.destroy (); #if (TAO_HAS_INTERCEPTORS == 1) + CORBA::release (this->pi_current_); this->pi_current_ = 0; // For the sake of consistency. #endif /* TAO_HAS_INTERCEPTORS == 1 */ } @@ -2171,6 +2180,46 @@ TAO_ORB_Core::resolve_typecodefactory_i (ACE_ENV_SINGLE_ARG_DECL) } void +TAO_ORB_Core::resolve_codecfactory_i (ACE_ENV_SINGLE_ARG_DECL) +{ + TAO_Object_Loader *loader = + ACE_Dynamic_Service<TAO_Object_Loader>::instance ("CodecFactory_Loader"); + if (loader == 0) + { + ACE_Service_Config::process_directive (ACE_TEXT("dynamic CodecFactory Service_Object *") + ACE_TEXT("TAO_CodecFactory:_make_TAO_CodecFactory_Loader()")); + loader = + ACE_Dynamic_Service<TAO_Object_Loader>::instance ("CodecFactory_Loader"); + if (loader == 0) + ACE_THROW (CORBA::ORB::InvalidName ()); + } + this->codec_factory_ = + loader->create_object (this->orb_, 0, 0 ACE_ENV_ARG_PARAMETER); +} + +void +TAO_ORB_Core::resolve_picurrent_i (ACE_ENV_SINGLE_ARG_DECL) +{ + TAO_Object_Loader *loader = + ACE_Dynamic_Service<TAO_Object_Loader>::instance ("PICurrent_Loader"); + if (loader == 0) + { + ACE_Service_Config::process_directive (ACE_TEXT("dynamic PICurrent_Loader Service_Object *") + ACE_TEXT("TAO:_make_TAO_PICurrent_Loader()")); + loader = + ACE_Dynamic_Service<TAO_Object_Loader>::instance ("PICurrent_Loader"); + if (loader == 0) + ACE_THROW (CORBA::ORB::InvalidName ()); + } + CORBA::Object_ptr pi = + loader->create_object (this->orb_, 0, 0 ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + this->pi_current_ = dynamic_cast <TAO::PICurrent *> (pi); +} + + +void TAO_ORB_Core::resolve_dynanyfactory_i (ACE_ENV_SINGLE_ARG_DECL) { TAO_Object_Loader *loader = @@ -2426,8 +2475,8 @@ ACE_Data_Block* TAO_ORB_Core::create_input_cdr_data_block (size_t size) { - ACE_Allocator *dblock_allocator; - ACE_Allocator *buffer_allocator; + ACE_Allocator *dblock_allocator = 0; + ACE_Allocator *buffer_allocator = 0; dblock_allocator = this->input_cdr_dblock_allocator (); @@ -2588,8 +2637,8 @@ TAO_ORB_Core::call_timeout_hook (TAO_Stub *stub, void TAO_ORB_Core::set_timeout_hook (Timeout_Hook hook) { - TAO_ORB_Core_Static_Resources::instance ()->timeout_hook_ = hook; // Saving the hook pointer so that we can use it later when needed. + TAO_ORB_Core_Static_Resources::instance ()->timeout_hook_ = hook; return; } diff --git a/TAO/tao/ORB_Core.h b/TAO/tao/ORB_Core.h index 92353279c46..6cf62f88aaf 100644 --- a/TAO/tao/ORB_Core.h +++ b/TAO/tao/ORB_Core.h @@ -41,6 +41,10 @@ #if TAO_HAS_INTERCEPTORS == 1 #include "tao/Interceptor_List.h" +#include "tao/PICurrent_Impl.h" +#include "tao/PICurrent.h" +#include "tao/ClientRequestInterceptorC.h" +#include "tao/ServerRequestInterceptorC.h" namespace TAO { @@ -54,7 +58,6 @@ namespace TAO ServerRequestInterceptor_List; } -# include "PICurrent.h" #endif /* TAO_HAS_INTERCEPTORS == 1 */ #include "ace/Thread_Manager.h" @@ -751,6 +754,12 @@ TAO::Collocation_Strategy collocation_strategy (CORBA::Object_ptr object /// Resolve the TypeCodeFactory DLL. CORBA::Object_ptr resolve_typecodefactory (ACE_ENV_SINGLE_ARG_DECL); + /// Resolve the PICurrent. + CORBA::Object_ptr resolve_picurrent (ACE_ENV_SINGLE_ARG_DECL); + + /// Resolve the CodecFactory DLL. + CORBA::Object_ptr resolve_codecfactory (ACE_ENV_SINGLE_ARG_DECL); + /// Resolve the Dynamic Any Factory CORBA::Object_ptr resolve_dynanyfactory (ACE_ENV_SINGLE_ARG_DECL); @@ -1005,9 +1014,15 @@ protected: ACE_Allocator *dblock_allocator, ACE_Lock *lock); - /// Obtain and cache the dynamic any factory object reference. + /// Obtain and cache the typecode factory object reference. void resolve_typecodefactory_i (ACE_ENV_SINGLE_ARG_DECL); + /// Obtain and cache the picurrent factory object reference. + void resolve_picurrent_i (ACE_ENV_SINGLE_ARG_DECL); + + /// Obtain and cache the codec factory object reference. + void resolve_codecfactory_i (ACE_ENV_SINGLE_ARG_DECL); + /// Obtain and cache the dynamic any factory object reference. void resolve_dynanyfactory_i (ACE_ENV_SINGLE_ARG_DECL); @@ -1077,6 +1092,9 @@ protected: /// The cached IOR for the TypeCodeFactory DLL. CORBA::Object_ptr typecode_factory_; + /// The cached IOR for the CodecFactory DLL. + CORBA::Object_ptr codec_factory_; + /// The cached object reference for the DynAnyFactory. CORBA::Object_ptr dynany_factory_; diff --git a/TAO/tao/ORB_Core.i b/TAO/tao/ORB_Core.i index 4cd2042647b..38cd1a41fe9 100644 --- a/TAO/tao/ORB_Core.i +++ b/TAO/tao/ORB_Core.i @@ -378,6 +378,33 @@ TAO_ORB_Core::resolve_typecodefactory (ACE_ENV_SINGLE_ARG_DECL) return CORBA::Object::_duplicate (this->typecode_factory_); } +ACE_INLINE CORBA::Object_ptr +TAO_ORB_Core::resolve_picurrent (ACE_ENV_SINGLE_ARG_DECL) +{ + ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_, + CORBA::Object::_nil ()); + if (CORBA::is_nil (this->pi_current_)) + { + this->resolve_picurrent_i (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK_RETURN (CORBA::Object::_nil ()); + } + return CORBA::Object::_duplicate (this->pi_current_); +} + + +ACE_INLINE CORBA::Object_ptr +TAO_ORB_Core::resolve_codecfactory (ACE_ENV_SINGLE_ARG_DECL) +{ + ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_, + CORBA::Object::_nil ()); + if (CORBA::is_nil (this->codec_factory_)) + { + this->resolve_codecfactory_i (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK_RETURN (CORBA::Object::_nil ()); + } + return CORBA::Object::_duplicate (this->codec_factory_); +} + ACE_INLINE const char * TAO_ORB_Core::server_id (void) const { diff --git a/TAO/tao/Object.cpp b/TAO/tao/Object.cpp index f9562ce762d..85d898638e1 100644 --- a/TAO/tao/Object.cpp +++ b/TAO/tao/Object.cpp @@ -614,6 +614,13 @@ CORBA::Object::_validate_connection ( #endif /* TAO_HAS_CORBA_MESSAGING == 1 */ + +CORBA::ORB_ptr +CORBA::Object::_get_orb (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) +{ + return CORBA::ORB::_duplicate (this->orb_core_->orb ()); +} + /***************************************************************** * Global Functions ****************************************************************/ diff --git a/TAO/tao/Object.h b/TAO/tao/Object.h index 7db531bc153..0620fdff8cb 100644 --- a/TAO/tao/Object.h +++ b/TAO/tao/Object.h @@ -103,7 +103,7 @@ namespace CORBA * @name Spec defined methods * * These methods are defined here since they are required by the - * CORBA spec in a form specified by the C++ mapping. + * CORBA spec in a form specified by the C++ mapping. */ //@{ /// Increment the ref count. @@ -231,6 +231,10 @@ namespace CORBA #endif /* TAO_HAS_CORBA_MESSAGING == 1 */ + virtual CORBA::ORB_ptr _get_orb ( + ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS + ); + /** * @name Reference Count Managment * @@ -302,8 +306,6 @@ namespace CORBA /// Set the proxy broker. virtual void _proxy_broker (TAO::Object_Proxy_Broker *proxy_broker); - - public: /// Allows us to forbid marshaling of local interfaces. diff --git a/TAO/tao/Parser_Registry.cpp b/TAO/tao/Parser_Registry.cpp index 879df0fd0f1..b1d2432c89a 100644 --- a/TAO/tao/Parser_Registry.cpp +++ b/TAO/tao/Parser_Registry.cpp @@ -11,8 +11,8 @@ #include "tao/Parser_Registry.i" #endif /* __ACE_INLINE__ */ -ACE_RCSID (tao, - Parser_Registry, +ACE_RCSID (tao, + Parser_Registry, "$Id$") TAO_Parser_Registry::TAO_Parser_Registry (void) @@ -73,6 +73,3 @@ TAO_Parser_Registry::match_parser (const char *ior_string) return 0; } -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/tao/Policy_Current.cpp b/TAO/tao/Policy_Current.cpp new file mode 100644 index 00000000000..10def0962a0 --- /dev/null +++ b/TAO/tao/Policy_Current.cpp @@ -0,0 +1,80 @@ +// $Id$ + +#include "Policy_Current.h" + +#if (TAO_HAS_CORBA_MESSAGING == 1) + +#include "tao/TSS_Resources.h" + +#if !defined (__ACE_INLINE__) +# include "tao/Policy_Current.inl" +#endif /* ! __ACE_INLINE__ */ + + +ACE_RCSID (tao, + Policy_Current, + "$Id$") + + +TAO_Policy_Current_Impl & +TAO_Policy_Current::implementation (TAO_Policy_Current_Impl ¤t) +{ + TAO_TSS_Resources *tss = + TAO_TSS_RESOURCES::instance (); + + TAO_Policy_Current_Impl *old = tss->policy_current_; + tss->policy_current_ = ¤t; + return *old; +} + +TAO_Policy_Current_Impl & +TAO_Policy_Current::implementation (void) const +{ + return *TAO_TSS_RESOURCES::instance ()->policy_current_; +} + +CORBA::Policy_ptr +TAO_Policy_Current::get_policy ( + CORBA::PolicyType policy + ACE_ENV_ARG_DECL) +{ + TAO_Policy_Current_Impl &impl = this->implementation (); + + return impl.get_policy (policy ACE_ENV_ARG_PARAMETER); +} + +CORBA::PolicyList * +TAO_Policy_Current::get_policy_overrides ( + const CORBA::PolicyTypeSeq & ts + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)) + +{ + TAO_Policy_Current_Impl &impl = this->implementation (); + + return impl.get_policy_overrides (ts ACE_ENV_ARG_PARAMETER); +} + +void +TAO_Policy_Current::set_policy_overrides (const CORBA::PolicyList & policies, + CORBA::SetOverrideType set_add + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException, + CORBA::InvalidPolicies)) +{ + TAO_Policy_Current_Impl &impl = this->implementation (); + + impl.set_policy_overrides (policies, set_add ACE_ENV_ARG_PARAMETER); +} + +CORBA::Policy_ptr +TAO_Policy_Current::get_cached_policy (TAO_Cached_Policy_Type type + ACE_ENV_ARG_DECL) +{ + TAO_Policy_Current_Impl &impl = this->implementation (); + + return impl.get_cached_policy (type + ACE_ENV_ARG_PARAMETER); +} + +#endif /* TAO_HAS_CORBA_MESSAGING == 1 */ diff --git a/TAO/tao/Policy_Current.h b/TAO/tao/Policy_Current.h new file mode 100644 index 00000000000..ad0d5da00e3 --- /dev/null +++ b/TAO/tao/Policy_Current.h @@ -0,0 +1,92 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file Policy_Current.h + * + * $Id$ + * + * An implementation for the CORBA::PolicyManager interface. + * + * + * @author Carlos O'Ryan (coryan@cs.wustl.edu) + */ +//============================================================================= + + +#ifndef TAO_POLICY_CURRENT_H +#define TAO_POLICY_CURRENT_H + +#include /**/ "ace/pre.h" + +#include "TAO_Export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/orbconf.h" + +#if (TAO_HAS_CORBA_MESSAGING == 1) + +#include "tao/PolicyC.h" +#include "tao/LocalObject.h" + +#if defined(_MSC_VER) +#pragma warning(push) +#pragma warning(disable:4250) +#endif /* _MSC_VER */ + +class TAO_Policy_Current_Impl; + +class TAO_Export TAO_Policy_Current : + public CORBA::PolicyCurrent, + public TAO_Local_RefCounted_Object +{ +public: + /// Constructor + TAO_Policy_Current (void); + + /// Obtain a single policy. + CORBA::Policy_ptr get_policy ( + CORBA::PolicyType policy + ACE_ENV_ARG_DECL); + + /// Obtain a single cached policy. + CORBA::Policy_ptr get_cached_policy (TAO_Cached_Policy_Type type + ACE_ENV_ARG_DECL); + + // = The CORBA::PolicyManager operations + + virtual CORBA::PolicyList * get_policy_overrides ( + const CORBA::PolicyTypeSeq & ts + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC ((CORBA::SystemException)); + + virtual void set_policy_overrides ( + const CORBA::PolicyList & policies, + CORBA::SetOverrideType set_add + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ) + ACE_THROW_SPEC ((CORBA::SystemException, + CORBA::InvalidPolicies)); + + // = Set and get the implementation. + TAO_Policy_Current_Impl &implementation (void) const; + TAO_Policy_Current_Impl &implementation (TAO_Policy_Current_Impl &); +}; + +#if defined(_MSC_VER) +#pragma warning(pop) +#endif /* _MSC_VER */ + +#if defined (__ACE_INLINE__) +# include "tao/Policy_Current.inl" +#endif /* __ACE_INLINE__ */ + +#endif /* TAO_HAS_CORBA_MESSAGING == 1 */ + +#include /**/ "ace/post.h" + +#endif /* TAO_POLICY_CURRENT_H */ diff --git a/TAO/tao/Policy_Current.inl b/TAO/tao/Policy_Current.inl new file mode 100644 index 00000000000..e9bdbec8bb8 --- /dev/null +++ b/TAO/tao/Policy_Current.inl @@ -0,0 +1,7 @@ +// $Id$ + +ACE_INLINE +TAO_Policy_Current::TAO_Policy_Current (void) +{ +} + diff --git a/TAO/tao/Policy_Current_Impl.cpp b/TAO/tao/Policy_Current_Impl.cpp new file mode 100644 index 00000000000..6ebb543218d --- /dev/null +++ b/TAO/tao/Policy_Current_Impl.cpp @@ -0,0 +1,38 @@ +// $Id$ + +#include "Policy_Current_Impl.h" + +#if (TAO_HAS_CORBA_MESSAGING == 1) + +#if !defined (__ACE_INLINE__) +# include "tao/Policy_Current_Impl.inl" +#endif /* ! __ACE_INLINE__ */ + + +ACE_RCSID (tao, + Policy_Manager, + "$Id$") + +void +TAO_Policy_Current_Impl::set_policy_overrides ( + const CORBA::PolicyList & policies, + CORBA::SetOverrideType set_add + ACE_ENV_ARG_DECL + ) +{ + this->manager_impl_.set_policy_overrides (policies, + set_add + ACE_ENV_ARG_PARAMETER); +} + +CORBA::PolicyList * +TAO_Policy_Current_Impl::get_policy_overrides ( + const CORBA::PolicyTypeSeq & ts + ACE_ENV_ARG_DECL + ) +{ + return this->manager_impl_.get_policy_overrides (ts + ACE_ENV_ARG_PARAMETER); +} + +#endif /* TAO_HAS_CORBA_MESSAGING == 1 */ diff --git a/TAO/tao/Policy_Current_Impl.h b/TAO/tao/Policy_Current_Impl.h new file mode 100644 index 00000000000..300473723ac --- /dev/null +++ b/TAO/tao/Policy_Current_Impl.h @@ -0,0 +1,82 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file Policy_Current_Impl.h + * + * $Id$ + * + * An implementation for the CORBA::PolicyManager interface. + * + * + * @author Carlos O'Ryan (coryan@cs.wustl.edu) + */ +//============================================================================= + + +#ifndef TAO_POLICY_CURRENT_IMPL_H +#define TAO_POLICY_CURRENT_IMPL_H + +#include /**/ "ace/pre.h" + +#include "TAO_Export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/orbconf.h" + +#if (TAO_HAS_CORBA_MESSAGING == 1) + +#include "tao/PolicyC.h" +#include "tao/LocalObject.h" +#include "tao/Policy_Set.h" + +#if defined(_MSC_VER) +#pragma warning(push) +#pragma warning(disable:4250) +#endif /* _MSC_VER */ + +class TAO_Export TAO_Policy_Current_Impl +{ +public: + + TAO_Policy_Current_Impl (void); + + /// Obtain a single policy. + CORBA::Policy_ptr get_policy (CORBA::PolicyType policy + ACE_ENV_ARG_DECL); + + /// Obtain a single cached policy. + CORBA::Policy_ptr get_cached_policy (TAO_Cached_Policy_Type type + ACE_ENV_ARG_DECL); + + // = The CORBA::PolicyManager operations + + CORBA::PolicyList * get_policy_overrides ( + const CORBA::PolicyTypeSeq & ts + ACE_ENV_ARG_DECL_WITH_DEFAULTS + ); + void set_policy_overrides (const CORBA::PolicyList & policies, + CORBA::SetOverrideType set_add + ACE_ENV_ARG_DECL_WITH_DEFAULTS); + +private: + /// The implementation. + TAO_Policy_Set manager_impl_; +}; + +#if defined(_MSC_VER) +#pragma warning(pop) +#endif /* _MSC_VER */ + +#if defined (__ACE_INLINE__) +# include "tao/Policy_Current_Impl.inl" +#endif /* __ACE_INLINE__ */ + +#endif /* TAO_HAS_CORBA_MESSAGING == 1 */ + +#include /**/ "ace/post.h" + +#endif /* TAO_POLICY_CURRENT_IMPL_H */ diff --git a/TAO/tao/Policy_Current_Impl.inl b/TAO/tao/Policy_Current_Impl.inl new file mode 100644 index 00000000000..92838269eec --- /dev/null +++ b/TAO/tao/Policy_Current_Impl.inl @@ -0,0 +1,24 @@ +// $Id$ + +ACE_INLINE +TAO_Policy_Current_Impl::TAO_Policy_Current_Impl (void) + : manager_impl_ (TAO_POLICY_THREAD_SCOPE) +{ +} + +ACE_INLINE CORBA::Policy_ptr +TAO_Policy_Current_Impl::get_policy ( + CORBA::PolicyType policy + ACE_ENV_ARG_DECL) +{ + return this->manager_impl_.get_policy (policy ACE_ENV_ARG_PARAMETER); +} + +ACE_INLINE CORBA::Policy_ptr +TAO_Policy_Current_Impl::get_cached_policy (TAO_Cached_Policy_Type type + ACE_ENV_ARG_DECL) +{ + return this->manager_impl_.get_cached_policy (type + ACE_ENV_ARG_PARAMETER); +} + diff --git a/TAO/tao/Policy_Manager.cpp b/TAO/tao/Policy_Manager.cpp index 830260f6f80..59280a5c800 100644 --- a/TAO/tao/Policy_Manager.cpp +++ b/TAO/tao/Policy_Manager.cpp @@ -4,8 +4,6 @@ #if (TAO_HAS_CORBA_MESSAGING == 1) -#include "tao/TSS_Resources.h" - #if !defined (__ACE_INLINE__) # include "tao/Policy_Manager.i" #endif /* ! __ACE_INLINE__ */ @@ -15,44 +13,4 @@ ACE_RCSID (tao, Policy_Manager, "$Id$") - -TAO_Policy_Current_Impl & -TAO_Policy_Current::implementation (TAO_Policy_Current_Impl ¤t) -{ - TAO_TSS_Resources *tss = - TAO_TSS_RESOURCES::instance (); - - TAO_Policy_Current_Impl *old = tss->policy_current_; - tss->policy_current_ = ¤t; - return *old; -} - -TAO_Policy_Current_Impl & -TAO_Policy_Current::implementation (void) const -{ - return *TAO_TSS_RESOURCES::instance ()->policy_current_; -} - -void -TAO_Policy_Current_Impl::set_policy_overrides ( - const CORBA::PolicyList & policies, - CORBA::SetOverrideType set_add - ACE_ENV_ARG_DECL - ) -{ - this->manager_impl_.set_policy_overrides (policies, - set_add - ACE_ENV_ARG_PARAMETER); -} - -CORBA::PolicyList * -TAO_Policy_Current_Impl::get_policy_overrides ( - const CORBA::PolicyTypeSeq & ts - ACE_ENV_ARG_DECL - ) -{ - return this->manager_impl_.get_policy_overrides (ts - ACE_ENV_ARG_PARAMETER); -} - #endif /* TAO_HAS_CORBA_MESSAGING == 1 */ diff --git a/TAO/tao/Policy_Manager.h b/TAO/tao/Policy_Manager.h index 32a5b53bb0f..c61e90afdb9 100644 --- a/TAO/tao/Policy_Manager.h +++ b/TAO/tao/Policy_Manager.h @@ -8,7 +8,6 @@ * * An implementation for the CORBA::PolicyManager interface. * - * * @author Carlos O'Ryan (coryan@cs.wustl.edu) */ //============================================================================= @@ -76,77 +75,6 @@ private: TAO_Policy_Set impl_; }; -// **************************************************************** - -class TAO_Export TAO_Policy_Current_Impl -{ -public: - - TAO_Policy_Current_Impl (void); - - /// Obtain a single policy. - CORBA::Policy_ptr get_policy (CORBA::PolicyType policy - ACE_ENV_ARG_DECL); - - /// Obtain a single cached policy. - CORBA::Policy_ptr get_cached_policy (TAO_Cached_Policy_Type type - ACE_ENV_ARG_DECL); - - // = The CORBA::PolicyManager operations - - CORBA::PolicyList * get_policy_overrides ( - const CORBA::PolicyTypeSeq & ts - ACE_ENV_ARG_DECL_WITH_DEFAULTS - ); - void set_policy_overrides (const CORBA::PolicyList & policies, - CORBA::SetOverrideType set_add - ACE_ENV_ARG_DECL_WITH_DEFAULTS); - -private: - /// The implementation. - TAO_Policy_Set manager_impl_; -}; - -// **************************************************************** - -class TAO_Export TAO_Policy_Current : - public CORBA::PolicyCurrent, - public TAO_Local_RefCounted_Object -{ -public: - /// Constructor - TAO_Policy_Current (void); - - /// Obtain a single policy. - CORBA::Policy_ptr get_policy ( - CORBA::PolicyType policy - ACE_ENV_ARG_DECL); - - /// Obtain a single cached policy. - CORBA::Policy_ptr get_cached_policy (TAO_Cached_Policy_Type type - ACE_ENV_ARG_DECL); - - // = The CORBA::PolicyManager operations - - virtual CORBA::PolicyList * get_policy_overrides ( - const CORBA::PolicyTypeSeq & ts - ACE_ENV_ARG_DECL_WITH_DEFAULTS - ) - ACE_THROW_SPEC ((CORBA::SystemException)); - - virtual void set_policy_overrides ( - const CORBA::PolicyList & policies, - CORBA::SetOverrideType set_add - ACE_ENV_ARG_DECL_WITH_DEFAULTS - ) - ACE_THROW_SPEC ((CORBA::SystemException, - CORBA::InvalidPolicies)); - - // = Set and get the implementation. - TAO_Policy_Current_Impl &implementation (void) const; - TAO_Policy_Current_Impl &implementation (TAO_Policy_Current_Impl &); -}; - #if defined(_MSC_VER) #pragma warning(pop) #endif /* _MSC_VER */ diff --git a/TAO/tao/Policy_Manager.i b/TAO/tao/Policy_Manager.i index 56505e6a2b0..3882443c3c8 100644 --- a/TAO/tao/Policy_Manager.i +++ b/TAO/tao/Policy_Manager.i @@ -51,79 +51,3 @@ TAO_Policy_Manager::get_cached_policy (TAO_Cached_Policy_Type type ACE_ENV_ARG_PARAMETER); } - - -// **************************************************************** - -ACE_INLINE -TAO_Policy_Current::TAO_Policy_Current (void) -{ -} - -ACE_INLINE -TAO_Policy_Current_Impl::TAO_Policy_Current_Impl (void) - : manager_impl_ (TAO_POLICY_THREAD_SCOPE) -{ -} - -ACE_INLINE CORBA::Policy_ptr -TAO_Policy_Current_Impl::get_policy ( - CORBA::PolicyType policy - ACE_ENV_ARG_DECL) -{ - return this->manager_impl_.get_policy (policy ACE_ENV_ARG_PARAMETER); -} - -ACE_INLINE CORBA::Policy_ptr -TAO_Policy_Current_Impl::get_cached_policy (TAO_Cached_Policy_Type type - ACE_ENV_ARG_DECL) -{ - return this->manager_impl_.get_cached_policy (type - ACE_ENV_ARG_PARAMETER); -} - -// **************************************************************** - -ACE_INLINE CORBA::Policy_ptr -TAO_Policy_Current::get_policy ( - CORBA::PolicyType policy - ACE_ENV_ARG_DECL) -{ - TAO_Policy_Current_Impl &impl = this->implementation (); - - return impl.get_policy (policy ACE_ENV_ARG_PARAMETER); -} - -ACE_INLINE CORBA::PolicyList * -TAO_Policy_Current::get_policy_overrides ( - const CORBA::PolicyTypeSeq & ts - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) - -{ - TAO_Policy_Current_Impl &impl = this->implementation (); - - return impl.get_policy_overrides (ts ACE_ENV_ARG_PARAMETER); -} - -ACE_INLINE void -TAO_Policy_Current::set_policy_overrides (const CORBA::PolicyList & policies, - CORBA::SetOverrideType set_add - ACE_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException, - CORBA::InvalidPolicies)) -{ - TAO_Policy_Current_Impl &impl = this->implementation (); - - impl.set_policy_overrides (policies, set_add ACE_ENV_ARG_PARAMETER); -} - -ACE_INLINE CORBA::Policy_ptr -TAO_Policy_Current::get_cached_policy (TAO_Cached_Policy_Type type - ACE_ENV_ARG_DECL) -{ - TAO_Policy_Current_Impl &impl = this->implementation (); - - return impl.get_cached_policy (type - ACE_ENV_ARG_PARAMETER); -} diff --git a/TAO/tao/objectid.h b/TAO/tao/objectid.h index 769479ac407..cc90329aa2a 100644 --- a/TAO/tao/objectid.h +++ b/TAO/tao/objectid.h @@ -60,9 +60,10 @@ #define TAO_OBJID_NOTIFICATIONSERVICE "NotificationService" #define TAO_OBJID_TYPEDNOTIFICATIONSERVICE "TypedNotificationService" #define TAO_OBJID_COMPONENTHOMEFINDER "ComponentHomeFinder" -#define TAO_OBJID_PSS "PSS" -#define TAO_OBJID_CODECFACTORY "CodecFactory" -#define TAO_OBJID_PICurrent "PICurrent" +#define TAO_OBJID_PSS "PSS" +#define TAO_OBJID_CODECFACTORY "CodecFactory" +#define TAO_OBJID_PICurrent "PICurrent" +#define TAO_OBJID_POAMANAGERFACTORY "POAManagerFactory" // Comma separated list of the above ObjectIDs. // DO NOT include unimplemented services! @@ -99,8 +100,5 @@ enum TAO_MCAST_SERVICEID /// No. of services locatable through multicast. #define TAO_NO_OF_MCAST_SERVICES 4 - - - #include /**/ "ace/post.h" #endif /*TAO_OBJECTID_H*/ diff --git a/TAO/tao/orbconf.h b/TAO/tao/orbconf.h index 74f89e9e568..aa28ab7f1bd 100644 --- a/TAO/tao/orbconf.h +++ b/TAO/tao/orbconf.h @@ -319,6 +319,10 @@ const size_t TAO_DEFAULT_VALUE_FACTORY_TABLE_SIZE = 128; #define TAO_DEFAULT_ROOTPOA_NAME "RootPOA" #endif /* TAO_DEFAULT_ROOTPOA_NAME */ +#if !defined (TAO_DEFAULT_ROOTPOAMANAGER_NAME) +#define TAO_DEFAULT_ROOTPOAMANAGER_NAME "RootPOAManager" +#endif /* TAO_DEFAULT_ROOTPOAMANAGER_NAME */ + // The default lane name used when storing endpoints. #if !defined (TAO_DEFAULT_LANE) #define TAO_DEFAULT_LANE "default lane" |