ior.pidl
来自「这是广泛使用的通信开源项目,对于大容量,高并发的通讯要求完全能够胜任,他广泛可用」· PIDL 代码 · 共 202 行
PIDL
202 行
/**
* @file IOR.pidl
*
* IOR.pidl,v 1.5 2003/10/28 18:29:28 bala Exp
*
* @brief Pre-compiled IDL source for the TAO_IOP namespace.
*
* This file was used to generate the code in IORC.{h,i,cpp}.
*
* To regenerate the code use:
*
* tao_idl \
* -o orig -Gp -Gd -Ge 1 -GT \
* -Wb,export_macro=TAO_IORManip_Export \
* -Wb,export_include="ior_manip_export.h" \
* -Wb,pre_include="ace/pre.h" \
* -Wb,post_include="ace/post.h" \
* IOR.pidl
*
*/
#ifndef TAO_IOR_PIDL
#define TAO_IOR_PIDL
module TAO_IOP
{
/**
* @exception EmptyProfileList
*
* @brief @@ Bala, please describe this exception
*/
exception EmptyProfileList {};
/**
* @exception NotFound
*
* @brief @@ Bala, please describe this exception
*/
exception NotFound {};
/**
* @exception Duplicate
*
* @brief @@ Bala, please describe this exception
*/
exception Duplicate {};
/**
* @exception Invalid_IOR
*
* @brief @@ Bala, please describe this exception
*/
exception Invalid_IOR {};
/**
* @exception MultiProfileList
*
* @brief @@ Bala, please describe this exception
*/
exception MultiProfileList {};
/**
* @interface TAO_IOR_Property
*
* Allows setting properties by the different services in the
* IOR. The implementations of this interface would reside in the
* services. This interface essentially performs a role of a
* callback object.
*
* @todo This interface seems redundant in the face of the
* PortableInterceptor::IORInterceptor and the
* ObjectReferenceTemplate. If that is the case we should deprecate
* it and remove it.
*/
local interface TAO_IOR_Property
{
/// Operation that would set the required properties in the <ior>
/// as needed by the service.
boolean set_property (inout Object ior)
raises (Invalid_IOR);
/// Sets the profile ior1, in the profile ior2 to be a
/// primary.
boolean set_primary (inout Object ior1,
in Object ior2)
raises (Duplicate, NotFound);
/// Returns the ior of the primary from <ior> if it has been
/// set. Else returns a NotFound exception
Object get_primary (in Object ior)
raises (NotFound);
/// Returns a true or false depending on whether a primary member
/// has been set in <ior>
boolean is_primary_set (in Object ior);
/// If any of the IOR's within the IOGR has a primary tag, just
/// remove it. Returns zero if no primary was found.
boolean remove_primary_tag (inout Object iogr)
raises (NotFound);
};
/**
* @interface TAO_IOR_Manipulation
*
* @brief Allows applications to manipulate object references.
*
* Manipulating Object References. While this interface does not
* assume the use of CORBA complient IOPs, the IOP termonology is
* used throughout.
* Object references (Object) are used since they encapsulate the
* notion of object references and IORs.
* Note, an IOR contains one or more profiles and a profile can be
* considered to represent the location or route to a specific instance
* of an object.
* A profile may also contain supplimentary information useful for
* differrent services such as security.
* All Object references may have multiple profiles
*/
local interface TAO_IOR_Manipulation
{
typedef sequence <Object> IORList;
Object merge_iors (in IORList iors)
raises (EmptyProfileList,Duplicate,Invalid_IOR);
// Create a new object reference by merging the profiles lists in the
// supplied list of one or more object references.
Object add_profiles (in Object ior1,
in Object ior2)
raises (EmptyProfileList, Duplicate, Invalid_IOR);
// copy the profile list from "ior2" to "ior1".
// Note on ordering, while the current implementation will place
// the profiles from ior2 (which are not already in ior1) on the
// end of the profile list in ior1, there is no guarantee this ordering
// will be maintained. For example, string_to_object or object_to_string
// may reorder the profile lists. So, if it is important to use one
// profile before another then policies should be used along with tagged
// components/tagged profiles.
Object remove_profiles (in Object ior1,
in Object ior2)
raises (Invalid_IOR, EmptyProfileList, NotFound);
// Any profile in ior1 which matches at least one profile in ior2
// will be removed. Returns a new object reference
boolean set_property (in TAO_IOR_Property prop,
in Object ior)
raises (Invalid_IOR, Duplicate);
// Allows setting of properties as defined by the <prop> object
// in the <ior> list
// @@ Primary is specific to FT.. But let us have these
// @@ operations around. Further, as we pass the property object
// @@ around the implementation will not be tied with the FT
// @@ service. Any service can use their own ways of defining a
// @@ primary. For example FT service uses IOP::TAG_FT_PRIMARY
// @@ to identify a primary and some other service could use
// @@ something else. But the actual implementation of the
// @@ property object would take care of that.
boolean set_primary (in TAO_IOR_Property prop,
in Object ior1,
in Object ior2)
raises (Invalid_IOR, Duplicate, MultiProfileList, NotFound);
// Sets the profile ior1, in the profile ior2 to be a
// primary. If ior1 is a multi-profile IOR then the operation
// raises the MultiProfileList exception. If ior1 is not found
// in ior2, it raises an Invalid_IOR exception. If ior2 has a
// primary already defined then it raises a Duplicate
// exception.
/// If any of the IOR's within the IOGR has a primary tag, just remove
/// it. Return zero if no primary found.
boolean remove_primary_tag (in TAO_IOR_Property prop,
in Object ior);
Object get_primary (in TAO_IOR_Property prop,
in Object ior)
raises (NotFound);
// Returns the ior of the primary from <ior> if it has been
// set. Else returns a NotFound exception
boolean is_primary_set (in TAO_IOR_Property prop,
in Object ior);
// Returns a true or false depending on whether a primary member
// has been set in <ior>
unsigned long is_in_ior(in Object ior1, in Object ior2)
raises (NotFound);
// returns number of profiles which are in both ior1 and ior2.
unsigned long get_profile_count (in Object ior)
raises (EmptyProfileList);
// This will return the number of profiles contained in the
// corresponding object reference for this object.
};
};
#endif /* TAO_IOR_PIDL */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?