summaryrefslogtreecommitdiff
path: root/TAO/tao/IORManipulation/IOR.pidl
diff options
context:
space:
mode:
authorcoryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2002-02-08 01:08:32 +0000
committercoryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2002-02-08 01:08:32 +0000
commit7504d68268eea946c85e109a9fb7cbb9ace55810 (patch)
tree7ab7c47d9e7d717d76039c027c28553562075526 /TAO/tao/IORManipulation/IOR.pidl
parent86759a74d10c3e4a32a8d029f538eb0731ee122e (diff)
downloadATCD-7504d68268eea946c85e109a9fb7cbb9ace55810.tar.gz
ChangeLogTag:Thu Feb 7 17:06:24 2002 Carlos O'Ryan <coryan@uci.edu>
Diffstat (limited to 'TAO/tao/IORManipulation/IOR.pidl')
-rw-r--r--TAO/tao/IORManipulation/IOR.pidl190
1 files changed, 190 insertions, 0 deletions
diff --git a/TAO/tao/IORManipulation/IOR.pidl b/TAO/tao/IORManipulation/IOR.pidl
new file mode 100644
index 00000000000..f9084893267
--- /dev/null
+++ b/TAO/tao/IORManipulation/IOR.pidl
@@ -0,0 +1,190 @@
+/**
+ * @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,i,cpp}.
+ *
+ * To regenerate the code use:
+ *
+ * tao_idl \
+ * -o orig -Gp -Gd -Ge 1 -Gv -DCORBA3 \
+ * -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.idl
+ *
+ */
+
+#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
+ {
+ boolean set_property (in Object ior)
+ raises (Invalid_IOR);
+ // Operation that would set the required properties in the <ior>
+ // as needed by the service.
+
+ boolean set_primary (in Object ior1,
+ in Object ior2)
+ raises (Duplicate, NotFound);
+ // Sets the profile ior1, in the profile ior2 to be a
+ // primary.
+
+ Object get_primary (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 Object ior);
+ // Returns a true or false depending on whether a primary member
+ // has been set in <ior>
+ };
+
+ /**
+ * @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.
+
+ 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 */