/* -*- C++ -*- */ // ======================================================================== // $Id$ // // = FILENAME // CosTradingRepos.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_REPOS_IDL #define TAO_TRADING_REPOS_IDL #include #include "CosTrading.idl" #pragma prefix "omg.org" // OMG IDL for Service Type Repository Module, p 16-89 module CosTradingRepos { interface ServiceTypeRepository { // local types typedef sequence ServiceTypeNameSeq; enum PropertyMode { PROP_NORMAL, PROP_READONLY, PROP_MANDATORY, PROP_MANDATORY_READONLY }; struct PropStruct { CosTrading::PropertyName name; CORBA::TypeCode value_type; PropertyMode mode; }; typedef sequence PropStructSeq; typedef CosTrading::Istring Identifier; // IR::Identifier struct IncarnationNumber { unsigned long high; unsigned long low; }; struct TypeStruct { Identifier if_name; PropStructSeq props; ServiceTypeNameSeq super_types; boolean masked; IncarnationNumber incarnation; }; enum ListOption { all, since }; union SpecifiedServiceTypes switch ( ListOption ) { case all: boolean all_; case since: IncarnationNumber incarnation; }; // local exceptions exception ServiceTypeExists { CosTrading::ServiceTypeName name; }; exception InterfaceTypeMismatch { CosTrading::ServiceTypeName base_service; Identifier base_if; CosTrading::ServiceTypeName derived_service; Identifier derived_if; }; exception HasSubTypes { CosTrading::ServiceTypeName the_type; CosTrading::ServiceTypeName sub_type; }; exception AlreadyMasked { CosTrading::ServiceTypeName name; }; exception NotMasked { CosTrading::ServiceTypeName name; }; exception ValueTypeRedefinition { CosTrading::ServiceTypeName type_1; PropStruct definition_1; CosTrading::ServiceTypeName type_2; PropStruct definition_2; }; exception DuplicateServiceTypeName { CosTrading::ServiceTypeName name; }; // attributes readonly attribute IncarnationNumber incarnation; // operation signatures IncarnationNumber add_type (in CosTrading::ServiceTypeName name, in Identifier if_name, in PropStructSeq props, in ServiceTypeNameSeq super_types) raises (CosTrading::IllegalServiceType, ServiceTypeExists, InterfaceTypeMismatch, CosTrading::IllegalPropertyName, CosTrading::DuplicatePropertyName, ValueTypeRedefinition, CosTrading::UnknownServiceType, DuplicateServiceTypeName); void remove_type (in CosTrading::ServiceTypeName name) raises (CosTrading::IllegalServiceType, CosTrading::UnknownServiceType, HasSubTypes); ServiceTypeNameSeq list_types (in SpecifiedServiceTypes which_types); TypeStruct describe_type (in CosTrading::ServiceTypeName name) raises (CosTrading::IllegalServiceType, CosTrading::UnknownServiceType); TypeStruct fully_describe_type (in CosTrading::ServiceTypeName name) raises (CosTrading::IllegalServiceType, CosTrading::UnknownServiceType); void mask_type (in CosTrading::ServiceTypeName name) raises (CosTrading::IllegalServiceType, CosTrading::UnknownServiceType, AlreadyMasked); void unmask_type (in CosTrading::ServiceTypeName name) raises (CosTrading::IllegalServiceType, CosTrading::UnknownServiceType, NotMasked); }; }; /* end module CosTradingRepos */ module CosTradingSequences { typedef sequence ShortSeq; typedef sequence UShortSeq; typedef sequence LongSeq; typedef sequence ULongSeq; typedef sequence BooleanSeq; typedef sequence FloatSeq; typedef sequence DoubleSeq; typedef sequence StringSeq; }; #endif /* TAO_TRADING_REPOS_IDL */