-- IDL module extracted from ITU-T X.950 (08/1997)
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 */