summaryrefslogtreecommitdiff
path: root/trunk/TAO/orbsvcs/orbsvcs/CosTrading.idl
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/TAO/orbsvcs/orbsvcs/CosTrading.idl')
-rw-r--r--trunk/TAO/orbsvcs/orbsvcs/CosTrading.idl524
1 files changed, 524 insertions, 0 deletions
diff --git a/trunk/TAO/orbsvcs/orbsvcs/CosTrading.idl b/trunk/TAO/orbsvcs/orbsvcs/CosTrading.idl
new file mode 100644
index 00000000000..4f544d12cca
--- /dev/null
+++ b/trunk/TAO/orbsvcs/orbsvcs/CosTrading.idl
@@ -0,0 +1,524 @@
+/* -*- C++ -*- */
+
+// ========================================================================
+// $Id$
+//
+// = FILENAME
+// CosTrading.idl
+//
+// = DESCRIPTION
+// Trader Service v1.0 described in CORBAservices: Common Object
+// Services Specification, chapter 16 OMG IDL for Trading Function
+// Module, p 16-74
+//
+// ========================================================================
+
+#ifndef TAO_TRADING_IDL
+#define TAO_TRADING_IDL
+
+#include "tao/StringSeq.pidl"
+
+#pragma prefix "omg.org"
+
+module CosTrading
+{
+ // forward references to our interfaces
+
+ interface Lookup;
+ interface Register;
+ interface Link;
+ interface Proxy;
+ interface Admin;
+ interface OfferIterator;
+ interface OfferIdIterator;
+
+ // type definitions used in more than one interface
+ typedef string Istring;
+ typedef Object TypeRepository;
+
+ typedef Istring PropertyName;
+ typedef sequence<PropertyName> PropertyNameSeq;
+ typedef any PropertyValue;
+
+ struct Property
+ {
+ PropertyName name;
+ PropertyValue value;
+ };
+ typedef sequence<Property> PropertySeq;
+
+ struct Offer
+ {
+ Object reference;
+ PropertySeq properties;
+ };
+ typedef sequence<Offer> OfferSeq;
+
+ typedef string OfferId;
+ typedef sequence<OfferId> OfferIdSeq;
+
+ typedef Istring ServiceTypeName; // similar structure to IR::Identifier
+
+ typedef Istring Constraint;
+
+ enum FollowOption
+ {
+ local_only,
+ if_no_local,
+ always
+ };
+
+ typedef Istring LinkName;
+ typedef sequence<LinkName> LinkNameSeq;
+ typedef LinkNameSeq TraderName;
+
+ typedef string PolicyName; // policy names restricted to Latin1
+ typedef sequence<PolicyName> PolicyNameSeq;
+ typedef any PolicyValue;
+
+ struct Policy
+ {
+ PolicyName name;
+ PolicyValue value;
+ };
+ typedef sequence<Policy> PolicySeq;
+
+ // exceptions used in more than one interface
+
+ exception UnknownMaxLeft {};
+
+ exception NotImplemented {};
+
+ exception IllegalServiceType
+ {
+ ServiceTypeName type;
+ };
+
+ exception UnknownServiceType
+ {
+ ServiceTypeName type;
+ };
+
+ exception IllegalPropertyName
+ {
+ PropertyName name;
+ };
+
+ exception DuplicatePropertyName
+ {
+ PropertyName name;
+ };
+
+ exception PropertyTypeMismatch
+ {
+ ServiceTypeName type;
+ Property prop;
+ };
+
+ exception MissingMandatoryProperty
+ {
+ ServiceTypeName type;
+ PropertyName name;
+ };
+
+ exception ReadonlyDynamicProperty
+ {
+ ServiceTypeName type;
+ PropertyName name;
+ };
+
+ exception IllegalConstraint
+ {
+ Constraint constr;
+ };
+
+ exception InvalidLookupRef
+ {
+ Lookup target;
+ };
+
+ exception IllegalOfferId
+ {
+ OfferId id;
+ };
+
+ exception UnknownOfferId
+ {
+ OfferId id;
+ };
+
+ exception DuplicatePolicyName
+ {
+ PolicyName name;
+ };
+
+ // the interfaces
+
+ interface TraderComponents
+ {
+ readonly attribute Lookup lookup_if;
+ readonly attribute Register register_if;
+ readonly attribute Link link_if;
+ readonly attribute Proxy proxy_if;
+ readonly attribute Admin admin_if;
+ };
+
+ interface SupportAttributes
+ {
+ readonly attribute boolean supports_modifiable_properties;
+ readonly attribute boolean supports_dynamic_properties;
+ readonly attribute boolean supports_proxy_offers;
+ readonly attribute TypeRepository type_repos;
+ };
+
+ interface ImportAttributes
+ {
+ readonly attribute unsigned long def_search_card;
+ readonly attribute unsigned long max_search_card;
+ readonly attribute unsigned long def_match_card;
+ readonly attribute unsigned long max_match_card;
+ readonly attribute unsigned long def_return_card;
+ readonly attribute unsigned long max_return_card;
+ readonly attribute unsigned long max_list;
+ readonly attribute unsigned long def_hop_count;
+ readonly attribute unsigned long max_hop_count;
+ readonly attribute FollowOption def_follow_policy;
+ readonly attribute FollowOption max_follow_policy;
+ };
+
+ interface LinkAttributes
+ {
+ readonly attribute FollowOption max_link_follow_policy;
+ };
+
+ interface Lookup:TraderComponents,SupportAttributes,ImportAttributes
+ {
+ typedef Istring Preference;
+
+ enum HowManyProps { none, some, all };
+
+ union SpecifiedProps switch ( HowManyProps )
+ {
+ case some: PropertyNameSeq prop_names;
+ };
+
+ exception IllegalPreference {
+ Preference pref;
+ };
+
+ exception IllegalPolicyName {
+ PolicyName name;
+ };
+
+ exception PolicyTypeMismatch {
+ Policy the_policy;
+ };
+
+ exception InvalidPolicyValue {
+ Policy the_policy;
+ };
+
+ void query (in ServiceTypeName type,
+ in Constraint constr,
+ in Preference pref,
+ in PolicySeq policies,
+ in SpecifiedProps desired_props,
+ in unsigned long how_many,
+ out OfferSeq offers,
+ out OfferIterator offer_itr,
+ out PolicyNameSeq limits_applied)
+ raises (IllegalServiceType,
+ UnknownServiceType,
+ IllegalConstraint,
+ IllegalPreference,
+ IllegalPolicyName,
+ PolicyTypeMismatch,
+ InvalidPolicyValue,
+ IllegalPropertyName,
+ DuplicatePropertyName,
+ DuplicatePolicyName);
+ };
+
+ interface Register : TraderComponents, SupportAttributes
+ {
+ struct OfferInfo
+ {
+ Object reference;
+ ServiceTypeName type;
+ PropertySeq properties;
+ };
+
+ exception InvalidObjectRef {
+ Object ref;
+ };
+
+ exception UnknownPropertyName {
+ PropertyName name;
+ };
+
+ exception InterfaceTypeMismatch {
+ ServiceTypeName type;
+ Object reference;
+ };
+
+ exception ProxyOfferId {
+ OfferId id;
+ };
+
+ exception MandatoryProperty {
+ ServiceTypeName type;
+ PropertyName name;
+ };
+
+ exception ReadonlyProperty {
+ ServiceTypeName type;
+ PropertyName name;
+ };
+
+ exception NoMatchingOffers {
+ Constraint constr;
+ };
+
+ exception IllegalTraderName {
+ TraderName name;
+ };
+
+ exception UnknownTraderName {
+ TraderName name;
+ };
+
+ exception RegisterNotSupported {
+ TraderName name;
+ };
+
+ OfferId export (in Object reference,
+ in ServiceTypeName type,
+ in PropertySeq properties)
+ raises (InvalidObjectRef,
+ IllegalServiceType,
+ UnknownServiceType,
+ InterfaceTypeMismatch,
+ IllegalPropertyName, // e.g. prop_name = "<foo-bar"
+ PropertyTypeMismatch,
+ ReadonlyDynamicProperty,
+ MissingMandatoryProperty,
+ DuplicatePropertyName);
+
+ void withdraw (in OfferId id)
+ raises (IllegalOfferId,
+ UnknownOfferId,
+ ProxyOfferId);
+
+ OfferInfo describe (in OfferId id)
+ raises (IllegalOfferId,
+ UnknownOfferId,
+ ProxyOfferId);
+
+ void modify (in OfferId id,
+ in PropertyNameSeq del_list,
+ in PropertySeq modify_list)
+ raises (NotImplemented,
+ IllegalOfferId,
+ UnknownOfferId,
+ ProxyOfferId,
+ IllegalPropertyName,
+ UnknownPropertyName,
+ PropertyTypeMismatch,
+ ReadonlyDynamicProperty,
+ MandatoryProperty,
+ ReadonlyProperty,
+ DuplicatePropertyName);
+
+ void withdraw_using_constraint (in ServiceTypeName type,
+ in Constraint constr)
+ raises (IllegalServiceType,
+ UnknownServiceType,
+ IllegalConstraint,
+ NoMatchingOffers);
+
+ Register resolve (in TraderName name)
+ raises (IllegalTraderName,
+ UnknownTraderName,
+ RegisterNotSupported);
+ };
+
+ interface Link : TraderComponents, SupportAttributes, LinkAttributes
+ {
+ struct LinkInfo
+ {
+ Lookup target;
+ Register target_reg;
+ FollowOption def_pass_on_follow_rule;
+ FollowOption limiting_follow_rule;
+ };
+
+ exception IllegalLinkName {
+ LinkName name;
+ };
+
+ exception UnknownLinkName {
+ LinkName name;
+ };
+
+ exception DuplicateLinkName {
+ LinkName name;
+ };
+
+ exception DefaultFollowTooPermissive {
+ FollowOption def_pass_on_follow_rule;
+ FollowOption limiting_follow_rule;
+ };
+
+ exception LimitingFollowTooPermissive {
+ FollowOption limiting_follow_rule;
+ FollowOption max_link_follow_policy;
+ };
+
+ void add_link (in LinkName name,
+ in Lookup target,
+ in FollowOption def_pass_on_follow_rule,
+ in FollowOption limiting_follow_rule)
+ raises (IllegalLinkName,
+ DuplicateLinkName,
+ InvalidLookupRef, // e.g. nil
+ DefaultFollowTooPermissive,
+ LimitingFollowTooPermissive);
+
+ void remove_link (in LinkName name)
+ raises (IllegalLinkName,
+ UnknownLinkName);
+
+ LinkInfo describe_link (in LinkName name)
+ raises (IllegalLinkName,
+ UnknownLinkName);
+
+ LinkNameSeq list_links ( );
+
+ void modify_link (in LinkName name,
+ in FollowOption def_pass_on_follow_rule,
+ in FollowOption limiting_follow_rule)
+ raises (IllegalLinkName,
+ UnknownLinkName,
+ DefaultFollowTooPermissive,
+ LimitingFollowTooPermissive);
+ };
+
+ interface Proxy : TraderComponents, SupportAttributes
+ {
+ typedef Istring ConstraintRecipe;
+
+ struct ProxyInfo
+ {
+ ServiceTypeName type;
+ Lookup target;
+ PropertySeq properties;
+ boolean if_match_all;
+ ConstraintRecipe recipe;
+ PolicySeq policies_to_pass_on;
+ };
+
+ exception IllegalRecipe {
+ ConstraintRecipe recipe;
+ };
+
+ exception NotProxyOfferId {
+ OfferId id;
+ };
+
+ OfferId export_proxy (in Lookup target,
+ in ServiceTypeName type,
+ in PropertySeq properties,
+ in boolean if_match_all,
+ in ConstraintRecipe recipe,
+ in PolicySeq policies_to_pass_on)
+ raises (IllegalServiceType,
+ UnknownServiceType,
+ InvalidLookupRef, // e.g. nil
+ IllegalPropertyName,
+ PropertyTypeMismatch,
+ ReadonlyDynamicProperty,
+ MissingMandatoryProperty,
+ IllegalRecipe,
+ DuplicatePropertyName,
+ DuplicatePolicyName);
+
+ void withdraw_proxy (in OfferId id)
+ raises (IllegalOfferId,
+ UnknownOfferId,
+ NotProxyOfferId);
+
+ ProxyInfo describe_proxy (in OfferId id)
+ raises (IllegalOfferId,
+ UnknownOfferId,
+ NotProxyOfferId);
+ };
+
+ interface Admin : TraderComponents, SupportAttributes, ImportAttributes, LinkAttributes
+ {
+ typedef sequence<octet> OctetSeq;
+
+ readonly attribute OctetSeq request_id_stem;
+
+ unsigned long set_def_search_card (in unsigned long value);
+ unsigned long set_max_search_card (in unsigned long value);
+
+ unsigned long set_def_match_card (in unsigned long value);
+ unsigned long set_max_match_card (in unsigned long value);
+
+ unsigned long set_def_return_card (in unsigned long value);
+ unsigned long set_max_return_card (in unsigned long value);
+
+ unsigned long set_max_list (in unsigned long value);
+
+ boolean set_supports_modifiable_properties (in boolean value);
+ boolean set_supports_dynamic_properties (in boolean value);
+ boolean set_supports_proxy_offers (in boolean value);
+
+ unsigned long set_def_hop_count (in unsigned long value);
+ unsigned long set_max_hop_count (in unsigned long value);
+
+ FollowOption set_def_follow_policy (in FollowOption policy);
+ FollowOption set_max_follow_policy (in FollowOption policy);
+
+ FollowOption set_max_link_follow_policy (in FollowOption policy);
+
+ TypeRepository set_type_repos (in TypeRepository repository);
+
+ OctetSeq set_request_id_stem (in OctetSeq stem);
+
+ void list_offers (in unsigned long how_many,
+ out OfferIdSeq ids,
+ out OfferIdIterator id_itr)
+ raises (NotImplemented);
+
+ void list_proxies (in unsigned long how_many,
+ out OfferIdSeq ids,
+ out OfferIdIterator id_itr)
+ raises (NotImplemented);
+ };
+
+ interface OfferIterator
+ {
+ unsigned long max_left ()
+ raises (UnknownMaxLeft);
+
+ boolean next_n (in unsigned long n,
+ out OfferSeq offers);
+
+ void destroy ();
+ };
+
+ interface OfferIdIterator
+ {
+ unsigned long max_left ()
+ raises (UnknownMaxLeft);
+
+ boolean next_n (in unsigned long n,
+ out OfferIdSeq ids);
+
+ void destroy ();
+ };
+
+}; /* end module CosTrading */
+
+#endif /* TAO_TRADING_IDL */