summaryrefslogtreecommitdiff
path: root/TAO/tao/IORManipulation/IOR.pidl
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/IORManipulation/IOR.pidl')
-rw-r--r--TAO/tao/IORManipulation/IOR.pidl200
1 files changed, 200 insertions, 0 deletions
diff --git a/TAO/tao/IORManipulation/IOR.pidl b/TAO/tao/IORManipulation/IOR.pidl
new file mode 100644
index 00000000000..62d1e006697
--- /dev/null
+++ b/TAO/tao/IORManipulation/IOR.pidl
@@ -0,0 +1,200 @@
+/**
+ * @file IOR.pidl
+ *
+ * $Id$
+ *
+ * @brief Pre-compiled IDL source for the TAO_IOP namespace.
+ *
+ * This file was used to generate the code in IORC.{h,cpp}.
+ *
+ * To regenerate the code use:
+ *
+ * tao_idl \
+ * -o orig -Gp -Gd -GA -Sci \
+ * -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;
+
+ /// Create a new object reference by merging the profiles lists in the
+ /// supplied list of one or more object references.
+ Object merge_iors (in IORList iors)
+ 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 add_profiles (in Object ior1,
+ in Object ior2)
+ raises (EmptyProfileList, Duplicate, Invalid_IOR);
+
+ // Any profile in ior1 which matches at least one profile in ior2
+ // will be removed. Returns a new object reference
+ Object remove_profiles (in Object ior1,
+ in Object ior2)
+ raises (Invalid_IOR, EmptyProfileList, NotFound);
+
+ /// Allows setting of properties as defined by the @a prop object
+ /// in the @a ior list
+ boolean set_property (in TAO_IOR_Property prop,
+ in Object ior)
+ raises (Invalid_IOR, Duplicate);
+
+ // @@ 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.
+ // 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.
+ boolean set_primary (in TAO_IOR_Property prop,
+ in Object ior1,
+ in Object ior2)
+ raises (Invalid_IOR, Duplicate, MultiProfileList, NotFound);
+
+ /// 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);
+
+
+ /// Returns the ior of the primary from @a ior if it has been
+ /// set. Else returns a NotFound exception
+ Object get_primary (in TAO_IOR_Property prop,
+ in Object ior)
+ raises (NotFound);
+
+ /// Returns a true or false depending on whether a primary member
+ /// has been set in @a ior
+ boolean is_primary_set (in TAO_IOR_Property prop,
+ in Object ior);
+
+ /// Returns number of profiles which are in both ior1 and ior2.
+ unsigned long is_in_ior(in Object ior1, in Object ior2)
+ raises (NotFound);
+
+ /// This will return the number of profiles contained in the
+ /// corresponding object reference for this object.
+ unsigned long get_profile_count (in Object ior)
+ raises (EmptyProfileList);
+ };
+};
+
+#endif /* TAO_IOR_PIDL */