// This file contains OMG IDL and PIDL for the Common Object Services. // CosNaming Module, p 3-6 CORBAservices, Naming Service V1.0, 3/94 // A few minor changes for the JacORB distribution: // // added am enclosing COSS module and changed scoped names accordingly // // corrected a few syntax errors // // commented out: // #includes // forward declaration of Object #include "Corba.idl" module COSS { module CosNaming { typedef string Istring; struct NameComponent { Istring id; Istring kind; }; typedef sequence <NameComponent> Name; enum BindingType {nobject, ncontext}; struct Binding { Name binding_name; BindingType binding_type; }; typedef sequence <Binding> BindingList; interface BindingIterator; interface NamingContext { enum NotFoundReason { missing_node, not_context, not_object}; exception NotFound { NotFoundReason why; Name rest_of_name; }; exception CannotProceed { NamingContext cxt; Name rest_of_name; }; exception InvalidName{}; exception AlreadyBound {}; exception NotEmpty{}; void bind(in Name n, in Object obj) raises(NotFound, CannotProceed, InvalidName, AlreadyBound); void rebind(in Name n, in Object obj) raises(NotFound, CannotProceed, InvalidName); void bind_context(in Name n, in NamingContext nc) raises(NotFound, CannotProceed, InvalidName, AlreadyBound); void rebind_context(in Name n, in NamingContext nc) raises(NotFound, CannotProceed, InvalidName); Object resolve (in Name n) raises(NotFound, CannotProceed, InvalidName); void unbind(in Name n) raises(NotFound, CannotProceed, InvalidName); NamingContext new_context(); NamingContext bind_new_context(in Name n) raises(NotFound, AlreadyBound, CannotProceed, InvalidName); void destroy( ) raises(NotEmpty); void list (in unsigned long how_many, out BindingList bl, out BindingIterator bi); }; interface BindingIterator { boolean next_one(out Binding b); boolean next_n(in unsigned long how_many, out BindingList bl); void destroy(); }; }; // Names Library interface in PIDL, CORBAservices p 3- 14, Naming Service V1.0 3/94 /* interface LNameComponent { // PIDL exception NotSet{}; string get_id() raises(NotSet); void set_id(in string i); string get_kind() raises(NotSet); void set_kind(in string k); void destroy(); }; interface LName { // PIDL exception NoComponent{}; exception OverFlow{}; exception InvalidName{}; LName insert_component(in unsigned long i, in LNameComponent n) raises(NoComponent, OverFlow); LNameComponent get_component(in unsigned long i) raises(NoComponent); LNameComponent delete_component(in unsigned long i) raises(NoComponent); unsigned long num_components(); boolean equal(in LName ln); boolean less_than(in LName ln); Name to_idl_form() raises(InvalidName); void from_idl_form(in Name n); void destroy(); }; LName create_lname(); // C/C++ LNameComponent create_lname_component(); // C/C++ */ // CosEventComm Module, CORBAservices p 4-8, Event Service V1.0 3/94 module CosEventComm { exception Disconnected{}; interface PushConsumer { void push (in any data) raises(Disconnected); void disconnect_push_consumer(); }; interface PushSupplier { void disconnect_push_supplier(); }; interface PullSupplier { any pull () raises(Disconnected); any try_pull (out boolean has_event) raises(Disconnected); void disconnect_pull_supplier(); }; interface PullConsumer { void disconnect_pull_consumer(); }; }; // CosEventChannelAdmin Module, p 4-15 CORBAservices, Event // Service V1.0, 3/94 // #include "CosEventComm.idl" module CosEventChannelAdmin { exception AlreadyConnected {}; exception TypeError {}; interface ProxyPushConsumer: ::COSS::CosEventComm::PushConsumer { void connect_push_supplier( in ::COSS::CosEventComm::PushSupplier push_supplier) raises(AlreadyConnected); }; interface ProxyPullSupplier: ::COSS::CosEventComm::PullSupplier { void connect_pull_consumer( in ::COSS::CosEventComm::PullConsumer pull_consumer) raises(AlreadyConnected); }; interface ProxyPullConsumer: ::COSS::CosEventComm::PullConsumer { void connect_pull_supplier( in ::COSS::CosEventComm::PullSupplier pull_supplier) raises(AlreadyConnected,TypeError); }; interface ProxyPushSupplier: ::COSS::CosEventComm::PushSupplier { void connect_push_consumer( in ::COSS::CosEventComm::PushConsumer push_consumer) raises(AlreadyConnected, TypeError); }; interface ConsumerAdmin { ProxyPushSupplier obtain_push_supplier(); ProxyPullSupplier obtain_pull_supplier(); }; interface SupplierAdmin { ProxyPushConsumer obtain_push_consumer(); ProxyPullConsumer obtain_pull_consumer(); }; interface EventChannel { ConsumerAdmin for_consumers(); SupplierAdmin for_suppliers(); void destroy(); }; }; // CosTyped Event Module, p 4-22 CORBAservices, Event Service // V1.0, 3/94 // // #include "CosEventComm.idl" module CosTypedEventComm { interface TypedPushConsumer : ::COSS::CosEventComm::PushConsumer { Object get_typed_consumer(); }; interface TypedPullSupplier : ::COSS::CosEventComm::PullSupplier { Object get_typed_supplier(); }; }; // CosTypedEventChannelAdmin Module, p 4- 25 CORBAservices, // Event Service V1.0, 3/94 // // #include "CosEventChannel.idl" // // #include "CosTypedEventComm.idl" module CosTypedEventChannelAdmin { exception InterfaceNotSupported {}; exception NoSuchImplementation {}; typedef string Key; interface TypedProxyPushConsumer : ::COSS::CosEventChannelAdmin::ProxyPushConsumer, ::COSS::CosTypedEventComm::TypedPushConsumer { }; interface TypedProxyPullSupplier : ::COSS::CosEventChannelAdmin::ProxyPullSupplier, ::COSS::CosTypedEventComm::TypedPullSupplier { }; interface TypedSupplierAdmin : ::COSS::CosEventChannelAdmin::SupplierAdmin { TypedProxyPushConsumer obtain_typed_push_consumer( in Key supported_interface) raises(InterfaceNotSupported); ::COSS::CosEventChannelAdmin::ProxyPullConsumer obtain_typed_pull_consumer ( in Key uses_interface) raises(NoSuchImplementation); }; interface TypedConsumerAdmin : ::COSS::CosEventChannelAdmin::ConsumerAdmin { TypedProxyPullSupplier obtain_typed_pull_supplier( in Key supported_interface) raises (InterfaceNotSupported); ::COSS::CosEventChannelAdmin::ProxyPushSupplier obtain_typed_push_supplier( in Key uses_interface) raises(NoSuchImplementation); }; interface TypedEventChannel { TypedConsumerAdmin for_consumers(); TypedSupplierAdmin for_suppliers(); void destroy (); }; }; // CosPersistencePID Module, p 5-20 CORBAservices, // Persistent Object Service V1.0, 3/94 //#ifndef __COSPERSISTENCE //#define __COSPERSISTENCE module CosPersistencePID { interface PID { attribute string datastore_type; string get_PIDString(); }; }; // CosPersistencePDS Module, p 5-20 CORBAservices, // Persistent Object Service V1.0, 3/94 // #include "CosPersistencePID.idl" module CosPersistencePDS { // interface Object; interface PDS { PDS connect (in Object obj, in ::COSS::CosPersistencePID::PID p); void disconnect (in Object obj, in ::COSS::CosPersistencePID::PID p); void store (in Object obj, in ::COSS::CosPersistencePID::PID p); void restore (in Object obj, in ::COSS::CosPersistencePID::PID p); void delete (in Object obj, in ::COSS::CosPersistencePID::PID p); }; }; // CosPersistencePO Module, p 5-12 CORBAservices, // Persistent Object Service V1.0, 3/94 // // #include "CosPersistencePDS.idl" // CosPersistencePDS.idl // // #includes CosPersistencePID.idl module CosPersistencePO { interface PO { attribute ::COSS::CosPersistencePID::PID p; ::COSS::CosPersistencePDS::PDS connect ( in ::COSS::CosPersistencePID::PID p); void disconnect (in ::COSS::CosPersistencePID::PID p); void store (in ::COSS::CosPersistencePID::PID p); void restore (in ::COSS::CosPersistencePID::PID p); void delete (in ::COSS::CosPersistencePID::PID p); }; interface SD { void pre_store(); void post_restore(); }; }; // CosPersistencePOM Module, p 5-15 CORBAservices, // Persistent Object Service V1.0, 3/94 // #include "CosPersistencePDS.idl" // CosPersistencePDS.idl // #includes CosPersistencePID.idl module CosPersistencePOM { // interface Object; interface POM { ::COSS::CosPersistencePDS::PDS connect ( in Object obj, in ::COSS::CosPersistencePID::PID p); void disconnect ( in Object obj, in ::COSS::CosPersistencePID::PID p); void store ( in Object obj, in ::COSS::CosPersistencePID::PID p); void restore ( in Object obj, in ::COSS::CosPersistencePID::PID p); void delete ( in Object obj, in ::COSS::CosPersistencePID::PID p); }; }; // CosPersistencePDS_DA Module, p 5-22 CORBAservices, // Persistent Object Service, V1.0, 3/94 // #include "CosPersistencePDS.idl" // CosPersistencePDS.idl // #includes CosPersistencePID.idl module CosPersistencePDS_DA { typedef string DAObjectID; interface PID_DA : ::COSS::CosPersistencePID::PID { attribute DAObjectID oid; }; interface DAObject { boolean dado_same(in DAObject d); DAObjectID dado_oid(); PID_DA dado_pid(); void dado_remove(); void dado_free(); }; interface DAObjectFactory { DAObject create(); }; interface DAObjectFactoryFinder { DAObjectFactory find_factory(in string key); }; interface PDS_DA : ::COSS::CosPersistencePDS::PDS { DAObject get_data(); void set_data(in DAObject new_data); DAObject lookup(in DAObjectID id); PID_DA get_pid(); PID_DA get_object_pid(in DAObject dao); DAObjectFactoryFinder data_factories(); }; typedef sequence<string> AttributeNames; interface DynamicAttributeAccess { AttributeNames attribute_names(); any attribute_get(in string name); void attribute_set(in string name, in any value); }; typedef string ClusterID; typedef sequence<ClusterID> ClusterIDs; interface PDS_ClusteredDA : PDS_DA{ ClusterID cluster_id(); string cluster_kind(); ClusterIDs clusters_of(); PDS_ClusteredDA create_cluster(in string kind); PDS_ClusteredDA open_cluster(in ClusterID cluster); PDS_ClusteredDA copy_cluster( in PDS_DA source); }; }; // CosPersistenceDDO Module, p 5-32 CORBAservices, Persistent Object Service V1.0, 3/94 // #include "CosPersistencePID.idl" module CosPersistenceDDO { interface DDO { attribute string object_type; attribute ::COSS::CosPersistencePID::PID p; short add_data(); short add_data_property (in short data_id); short get_data_count(); short get_data_property_count (in short data_id); void get_data_property (in short data_id, in short property_id, out string property_name, out any property_value); void set_data_property (in short data_id, in short property_id, in string property_name, in any property_value); void get_data (in short data_id, out string data_name, out any data_value); void set_data (in short data_id, in string data_name, in any data_value); }; }; // CosPersistenceDS_CLI module, p 5-34 CORBAservices, // Persistent Object Service V1.0, 3/94 // #include "CosPersistenceDDO.idl" // CosPersistenceDDO.idl // #includes CosPersistencePID.idl module CosPersistenceDS_CLI { interface UserEnvironment { void set_option (in long option,in any value); void get_option (in long option,out any value); void release(); }; interface Connection { void set_option (in long option,in any value); void get_option (in long option,out any value); }; interface ConnectionFactory { Connection create_object ( in UserEnvironment user_envir); }; interface Cursor { void set_position (in long position,in any value); ::COSS::CosPersistenceDDO::DDO fetch_object(); }; interface CursorFactory { Cursor create_object ( in Connection connection); }; interface PID_CLI : ::COSS::CosPersistencePID::PID { attribute string datastore_id; attribute string id; }; interface Datastore_CLI { void connect (in Connection connection, in string datastore_id, in string user_name, in string authentication); void disconnect (in Connection connection); Connection get_connection ( in string datastore_id, in string user_name); void add_object (in Connection connection, in ::COSS::CosPersistenceDDO::DDO data_obj); void delete_object ( in Connection connection, in ::COSS::CosPersistenceDDO::DDO data_obj); void update_object ( in Connection connection, in ::COSS::CosPersistenceDDO::DDO data_obj); void retrieve_object( in Connection connection, in ::COSS::CosPersistenceDDO::DDO data_obj); Cursor select_object( in Connection connection, in string key); void transact (in UserEnvironment user_envir, in short completion_type); void assign_PID (in PID_CLI p); void assign_PID_relative ( in PID_CLI source_pid, in PID_CLI target_pid); boolean is_identical_PID ( in PID_CLI pid_1, in PID_CLI pid_2); string get_object_type (in PID_CLI p); void register_mapping_schema (in string schema_file); Cursor execute (in Connection connection, in string command); }; }; // CosLifeCycle Module, p 6-10 CORBAservices, LifeCycle Service V1.0, 3/94 // #include "Naming.idl" module CosLifeCycle { typedef ::COSS::CosNaming::Name Key; typedef Object Factory; typedef sequence <Factory> Factories; typedef struct NVP { ::COSS::CosNaming::Istring name; any value; } NameValuePair; typedef sequence <NameValuePair> Criteria; exception NoFactory { Key search_key; }; exception NotCopyable { string reason; }; exception NotMovable { string reason; }; exception NotRemovable { string reason; }; exception InvalidCriteria{ Criteria invalid_criteria; }; exception CannotMeetCriteria { Criteria unmet_criteria; }; interface FactoryFinder { Factories find_factories(in Key factory_key) raises(NoFactory); }; interface LifeCycleObject { LifeCycleObject copy(in FactoryFinder there, in Criteria the_criteria) raises(NoFactory, NotCopyable, InvalidCriteria, CannotMeetCriteria); void move(in FactoryFinder there, in Criteria the_criteria) raises(NoFactory, NotMovable, InvalidCriteria, CannotMeetCriteria); void remove() raises(NotRemovable); }; interface GenericFactory { boolean supports(in Key k); Object create_object( in Key k, in Criteria the_criteria) raises (NoFactory, InvalidCriteria, CannotMeetCriteria); }; }; // LifeCycleService Module, p 6- 55 CORBAservices, Life Cycle // Service V1.0, 3/94 // #include "LifeCycle.idl" module LifeCycleService { typedef sequence <::COSS::CosLifeCycle::NameValuePair> PolicyList; typedef sequence <::COSS::CosLifeCycle::Key> Keys; typedef sequence <::COSS::CosLifeCycle::NameValuePair> PropertyList; typedef sequence <::COSS::CosNaming::NameComponent> NameComponents; interface LifeCycleServiceAdmin { attribute PolicyList policies; void bind_generic_factory( in ::COSS::CosLifeCycle::GenericFactory gf, in ::COSS::CosNaming::NameComponent name, in Keys key_set, in PropertyList other_properties) raises (::COSS::CosNaming::NamingContext::AlreadyBound, ::COSS::CosNaming::NamingContext::InvalidName); void unbind_generic_factory( in ::COSS::CosNaming::NameComponent name) raises (::COSS::CosNaming::NamingContext::NotFound, ::COSS::CosNaming::NamingContext::InvalidName); ::COSS::CosLifeCycle::GenericFactory resolve_generic_factory( in ::COSS::CosNaming::NameComponent name) raises (::COSS::CosNaming::NamingContext::NotFound, ::COSS::CosNaming::NamingContext::InvalidName); NameComponents list_generic_factories(); boolean match_service (in ::COSS::CosLifeCycle::GenericFactory f); string get_hint(); void get_link_properties( in ::COSS::CosNaming::NameComponent name, out Keys key_set, out PropertyList other_properties) raises (::COSS::CosNaming::NamingContext::NotFound, ::COSS::CosNaming::NamingContext::InvalidName); }; }; // CosTransactions Module, p 10-66 // CORBAservices, Transaction Service V1.0, 3/94 module CosTransactions { // DATATYPES enum Status { StatusActive, StatusMarkedRollback, StatusPrepared, StatusCommitted, StatusRolledBack, StatusUnknown, StatusNoTransaction }; enum Vote { VoteCommit, VoteRollback, VoteReadOnly }; // Standard exceptions exception TransactionRequired {}; exception TransactionRolledBack {}; exception InvalidTransaction {}; // Heuristic exceptions exception HeuristicRollback {}; exception HeuristicCommit {}; exception HeuristicMixed {}; exception HeuristicHazard {}; // Exception from Orb operations exception WrongTransaction {}; // Other transaction-specific exceptions exception SubtransactionsUnavailable {}; exception NotSubtransaction {}; exception Inactive {}; exception NotPrepared {}; exception NoTransaction {}; exception InvalidControl {}; exception Unavailable {}; // Forward references for interfaces defined later in module interface Control; interface Terminator; interface Coordinator; interface Resource; interface RecoveryCoordinator; interface SubtransactionAwareResource; interface TransactionFactory; interface TransactionalObject; interface Current; // Current transaction pseudo object (PIDL) interface Current { void begin() raises(SubtransactionsUnavailable); void commit(in boolean report_heuristics) raises( NoTransaction, HeuristicMixed, HeuristicHazard ); void rollback() raises(NoTransaction); void rollback_only() raises(NoTransaction); Status get_status(); string get_transaction_name(); void set_timeout(in unsigned long seconds); Control get_control(); Control suspend(); void resume(in Control which) raises(InvalidControl); }; interface TransactionFactory { Control create(in unsigned long time_out); }; interface Control { Terminator get_terminator() raises(Unavailable); Coordinator get_coordinator() raises(Unavailable); }; interface Terminator { void commit(in boolean report_heuristics) raises( HeuristicMixed, HeuristicHazard ); void rollback(); }; interface Coordinator { Status get_status(); Status get_parent_status(); Status get_top_level_status(); boolean is_same_transaction(in Coordinator tc); boolean is_related_transaction(in Coordinator tc); boolean is_ancestor_transaction(in Coordinator tc); boolean is_descendant_transaction(in Coordinator tc); boolean is_top_level_transaction(); unsigned long hash_transaction(); unsigned long hash_top_level_tran(); RecoveryCoordinator register_resource(in Resource r) raises(Inactive); void register_subtran_aware(in SubtransactionAwareResource r) raises(Inactive, NotSubtransaction); void rollback_only() raises(Inactive); string get_transaction_name(); Control create_subtransaction() raises(SubtransactionsUnavailable, Inactive); }; interface RecoveryCoordinator { Status replay_completion(in Resource r) raises(NotPrepared); }; }; // end module CosTransactions // CosConcurrency Control Module, p 7-8 CORBAservices, // Concurrency Control Service V1.0, 3/94 // #include <CosTransactions.idl> module CosConcurrencyControl { enum lock_mode { read, write, upgrade, intention_read, intention_write }; exception LockNotHeld{}; interface LockCoordinator { void drop_locks(); }; interface LockSet { void lock(in lock_mode mode); boolean try_lock(in lock_mode mode); void unlock(in lock_mode mode) raises(LockNotHeld); void change_mode(in lock_mode held_mode, in lock_mode new_mode) raises(LockNotHeld); LockCoordinator get_coordinator( in ::COSS::CosTransactions::Coordinator which); }; interface TransactionalLockSet { void lock(in ::COSS::CosTransactions::Coordinator current, in lock_mode mode); boolean try_lock(in ::COSS::CosTransactions::Coordinator current, in lock_mode mode); void unlock(in ::COSS::CosTransactions::Coordinator current, in lock_mode mode) raises(LockNotHeld); void change_mode(in ::COSS::CosTransactions::Coordinator current, in lock_mode held_mode, in lock_mode new_mode) raises(LockNotHeld); LockCoordinator get_coordinator( in ::COSS::CosTransactions::Coordinator which); }; interface LockSetFactory { LockSet create(); LockSet create_related(in LockSet which); TransactionalLockSet create_transactional(); TransactionalLockSet create_transactional_related(in TransactionalLockSet which); }; }; // CosObjectIdentity Module, p 9-19 CORBAservices, Relationship // Service V1.0, 3/94 module CosObjectIdentity { typedef unsigned long ObjectIdentifier; interface IdentifiableObject { readonly attribute ObjectIdentifier constant_random_id; boolean is_identical ( in IdentifiableObject other_object); }; }; // CosRelationships Module, p 9-21 CORBAservices, Relationship // Service V1.0, 3/94 // #include <ObjectIdentity.idl> module CosRelationships { interface RoleFactory; interface RelationshipFactory; interface Relationship; interface Role; interface RelationshipIterator; typedef Object RelatedObject; typedef sequence<Role> Roles; typedef string RoleName; typedef sequence<RoleName> RoleNames; struct NamedRole {RoleName name; Role aRole;}; typedef sequence<NamedRole> NamedRoles; struct RelationshipHandle { Relationship the_relationship; ::COSS::CosObjectIdentity::ObjectIdentifier constant_random_id; }; typedef sequence<RelationshipHandle> RelationshipHandles; interface RelationshipFactory { struct NamedRoleType { RoleName name; ::CORBA::InterfaceDef named_role_type; }; typedef sequence<NamedRoleType> NamedRoleTypes; readonly attribute ::CORBA::InterfaceDef relationship_type; readonly attribute unsigned short degree; readonly attribute NamedRoleTypes named_role_types; exception RoleTypeError {NamedRoles culprits;}; exception MaxCardinalityExceeded { NamedRoles culprits;}; exception DegreeError {unsigned short required_degree;}; exception DuplicateRoleName {NamedRoles culprits;}; exception UnknownRoleName {NamedRoles culprits;}; Relationship create (in NamedRoles named_roles) raises (RoleTypeError, MaxCardinalityExceeded, DegreeError, DuplicateRoleName, UnknownRoleName); }; interface Relationship : ::COSS::CosObjectIdentity::IdentifiableObject { exception CannotUnlink { Roles offending_roles; }; readonly attribute NamedRoles named_roles; void destroy () raises(CannotUnlink); }; interface Role { exception UnknownRoleName {}; exception UnknownRelationship {}; exception RelationshipTypeError {}; exception CannotDestroyRelationship { RelationshipHandles offenders; }; exception ParticipatingInRelationship { RelationshipHandles the_relationships; }; readonly attribute RelatedObject related_object; RelatedObject get_other_related_object ( in RelationshipHandle rel, in RoleName target_name) raises (UnknownRoleName, UnknownRelationship); Role get_other_role (in RelationshipHandle rel, in RoleName target_name) raises (UnknownRoleName, UnknownRelationship); void get_relationships ( in unsigned long how_many, out RelationshipHandles rels, out RelationshipIterator iterator); void destroy_relationships() raises(CannotDestroyRelationship); void destroy() raises(ParticipatingInRelationship); boolean check_minimum_cardinality (); void link (in RelationshipHandle rel, in NamedRoles named_roles) raises(RelationshipFactory::MaxCardinalityExceeded, RelationshipTypeError); void unlink (in RelationshipHandle rel) raises (UnknownRelationship); }; interface RoleFactory { exception NilRelatedObject {}; exception RelatedObjectTypeError {}; readonly attribute ::CORBA::InterfaceDef role_type; readonly attribute unsigned long max_cardinality; readonly attribute unsigned long min_cardinality; // the following isn't allowed in IDL, // readonly attribute sequence <::CORBA::InterfaceDef> related_object_types; typedef sequence <::CORBA::InterfaceDef> InterfaceDefSeq; readonly attribute InterfaceDefSeq related_object_types; Role create_role (in RelatedObject related_object) raises (NilRelatedObject, RelatedObjectTypeError); }; interface RelationshipIterator { boolean next_one (out RelationshipHandle rel); boolean next_n (in unsigned long how_many, out RelationshipHandles rels); void destroy (); }; }; // CosCompoundExternalization Module, p 8-20 CORBAservices, // Externalization Service V1.0, 3/94 // #include <Graphs.idl> // #include <Stream.idl> // CosGraphs Module, p 9-39 CORBAservices, Relationship Service // V1.0, 3/94 // #include <Relationships.idl> // #include <ObjectIdentity.idl> module CosGraphs { interface TraversalFactory; interface Traversal; interface TraversalCriteria; interface Node; interface NodeFactory; interface Role; interface EdgeIterator; struct NodeHandle { Node the_node; ::COSS::CosObjectIdentity::ObjectIdentifier constant_random_id; }; typedef sequence<NodeHandle> NodeHandles; struct NamedRole { Role the_role; ::COSS::CosRelationships::RoleName the_name; }; typedef sequence<NamedRole> NamedRoles; struct EndPoint { NodeHandle the_node; NamedRole the_role; }; typedef sequence<EndPoint> EndPoints; struct Edge { EndPoint from; ::COSS::CosRelationships::RelationshipHandle the_relationship; EndPoints relatives; }; typedef sequence<Edge> Edges; enum PropagationValue {deep, shallow, none, inhibit}; enum Mode {depthFirst, breadthFirst, bestFirst}; interface TraversalFactory { Traversal create_traversal_on ( in NodeHandle root_node, in TraversalCriteria the_criteria, in Mode how); }; interface Traversal { typedef unsigned long TraversalScopedId; struct ScopedEndPoint { EndPoint point; TraversalScopedId id; }; typedef sequence<ScopedEndPoint> ScopedEndPoints; struct ScopedRelationship { ::COSS::CosRelationships::RelationshipHandle scoped_relationship; TraversalScopedId id; }; struct ScopedEdge { ScopedEndPoint from; ScopedRelationship the_relationship; ScopedEndPoints relatives; }; typedef sequence<ScopedEdge> ScopedEdges; boolean next_one (out ScopedEdge the_edge); boolean next_n (in short how_many, out ScopedEdges the_edges); void destroy (); }; interface TraversalCriteria { struct WeightedEdge { Edge the_edge; unsigned long weight; sequence<NodeHandle> next_nodes; }; typedef sequence<WeightedEdge> WeightedEdges; void visit_node(in NodeHandle a_node, in Mode search_mode); boolean next_one (out WeightedEdge the_edge); boolean next_n (in short how_many, out WeightedEdges the_edges); void destroy(); }; interface Node: ::COSS::CosObjectIdentity::IdentifiableObject { typedef sequence<Role> Roles; exception NoSuchRole {}; exception DuplicateRoleType {}; readonly attribute ::COSS::CosRelationships::RelatedObject related_object; readonly attribute Roles roles_of_node; Roles roles_of_type ( in ::CORBA::InterfaceDef role_type); void add_role (in Role a_role) raises (DuplicateRoleType); void remove_role (in ::CORBA::InterfaceDef of_type) raises (NoSuchRole); }; interface NodeFactory { Node create_node (in Object related_object); }; interface Role : ::COSS::CosRelationships::Role { void get_edges ( in long how_many, out Edges the_edges, out EdgeIterator the_rest); }; interface EdgeIterator { boolean next_one (out Edge the_edge); boolean next_n ( in unsigned long how_many, out Edges the_edges); void destroy (); }; }; // CosStream Module, 8-15 CORBAservices, // Externalization Service V1.0, 3/94 // #include <LifeCycle.idl> // #include <ObjectIdentity.idl> // #include <CompoundExternalization.idl> module CosStream { exception ObjectCreationError{}; exception StreamDataFormatError{}; interface StreamIO; interface Streamable: ::COSS::CosObjectIdentity::IdentifiableObject { readonly attribute ::COSS::CosLifeCycle::Key external_form_id; void externalize_to_stream( in StreamIO targetStreamIO); void internalize_from_stream( in StreamIO sourceStreamIO, in ::COSS::CosLifeCycle::FactoryFinder there) raises( ::COSS::CosLifeCycle::NoFactory, ObjectCreationError, StreamDataFormatError ); }; interface StreamableFactory { Streamable create_uninitialized(); }; interface StreamIO { void write_string(in string aString); void write_char(in char aChar); void write_octet(in octet anOctet); void write_unsigned_long( in unsigned long anUnsignedLong); void write_unsigned_short( in unsigned short anUnsignedShort); void write_long(in long aLong); void write_short(in short aShort); void write_float(in float aFloat); void write_double(in double aDouble); void write_boolean(in boolean aBoolean); void write_object(in Streamable aStreamable); // void write_graph(in ::COSS::CosCompoundExternalization::Node aNode); string read_string() raises(StreamDataFormatError); char read_char() raises(StreamDataFormatError ); octet read_octet() raises(StreamDataFormatError ); unsigned long read_unsigned_long() raises(StreamDataFormatError ); unsigned short read_unsigned_short() raises( StreamDataFormatError ); long read_long() raises(StreamDataFormatError ); short read_short() raises(StreamDataFormatError ); float read_float() raises(StreamDataFormatError ); double read_double() raises(StreamDataFormatError ); boolean read_boolean() raises(StreamDataFormatError ); Streamable read_object( in ::COSS::CosLifeCycle::FactoryFinder there, in Streamable aStreamable) raises(StreamDataFormatError ); // void read_graph( // in ::COSS::CosCompoundExternalization::Node starting_node, // in ::COSS::CosLifeCycle::FactoryFinder there) // raises(StreamDataFormatError ); }; }; module CosCompoundExternalization { interface Node; interface Role; interface Relationship; interface PropagationCriteriaFactory; struct RelationshipHandle { Relationship theRelationship; ::COSS::CosObjectIdentity::ObjectIdentifier constantRandomId; }; interface Node : ::COSS::CosGraphs::Node, ::COSS::CosStream::Streamable{ void externalize_node (in ::COSS::CosStream::StreamIO sio); void internalize_node (in ::COSS::CosStream::StreamIO sio, in ::COSS::CosLifeCycle::FactoryFinder there, out ::COSS::CosGraphs::Node::Roles rolesOfNode) raises (::COSS::CosLifeCycle::NoFactory); }; interface Role : ::COSS::CosGraphs::Role { void externalize_role (in ::COSS::CosStream::StreamIO sio); void internalize_role (in ::COSS::CosStream::StreamIO sio); ::COSS::CosGraphs::PropagationValue externalize_propagation ( in RelationshipHandle rel, in ::COSS::CosRelationships::RoleName toRoleName, out boolean sameForAll); }; interface Relationship : ::COSS::CosRelationships::Relationship { void externalize_relationship ( in ::COSS::CosStream::StreamIO sio); void internalize_relationship( in ::COSS::CosStream::StreamIO sio, in ::COSS::CosGraphs::NamedRoles newRoles); ::COSS::CosGraphs::PropagationValue externalize_propagation ( in ::COSS::CosRelationships::RoleName fromRoleName, in ::COSS::CosRelationships::RoleName toRoleName, out boolean sameForAll); }; interface PropagationCriteriaFactory { ::COSS::CosGraphs::TraversalCriteria create_for_externalize( ); }; }; // CosExternalization Module, 8-12 CORBAservices, // Externalization Service V1.0, 3/94 // #include <LifeCycle.idl> // #include <Stream.idl> module CosExternalization { exception InvalidFileNameError{}; exception ContextAlreadyRegistered{}; interface Stream: ::COSS::CosLifeCycle::LifeCycleObject{ void externalize( in ::COSS::CosStream::Streamable theObject); ::COSS::CosStream::Streamable internalize( in ::COSS::CosLifeCycle::FactoryFinder there) raises( ::COSS::CosLifeCycle::NoFactory, ::COSS::CosStream::StreamDataFormatError ); void begin_context() raises( ContextAlreadyRegistered); void end_context(); void flush(); }; interface StreamFactory { Stream create(); }; interface FileStreamFactory { Stream create( in string theFileName) raises( InvalidFileNameError ); }; }; // CosContainment Module, p 9- 48 CORBAservices, Relationship // Service V1.0, 3/94 // #include <Graphs.idl> module CosContainment { interface Relationship : ::COSS::CosRelationships::Relationship {}; interface ContainsRole : ::COSS::CosGraphs::Role {}; interface ContainedInRole : ::COSS::CosGraphs::Role {}; }; // CosExternalizationContainment Module, p 8-26 CORBAservices, // Externalization Service V1.0, 3/94 // #include <Containment.idl> // #include <CompoundExternalization.idl> module CosExternalizationContainment { interface Relationship : ::COSS::CosCompoundExternalization::Relationship, ::COSS::CosContainment::Relationship {}; interface ContainsRole : ::COSS::CosCompoundExternalization::Role, ::COSS::CosContainment::ContainsRole {}; interface ContainedInRole : ::COSS::CosCompoundExternalization::Role, ::COSS::CosContainment::ContainedInRole {}; }; // CosReference Module, p 9-50 CORBAservices, // Relationship Service V1.0, 3/94 // #include <Graphs.idl> module CosReference { interface Relationship : ::COSS::CosRelationships::Relationship {}; interface ReferencesRole : ::COSS::CosGraphs::Role {}; interface ReferencedByRole : ::COSS::CosGraphs::Role {}; }; // CosExternalizationReference Module, p 8-28 CORBAservices, // Externalization Service V1.0, 3/94 // #include <Reference.idl> // #include <CompoundExternalization.idl> module CosExternalizationReference { interface Relationship : ::COSS::CosCompoundExternalization::Relationship, ::COSS::CosReference::Relationship {}; interface ReferencesRole : ::COSS::CosCompoundExternalization::Role, ::COSS::CosReference::ReferencesRole {}; interface ReferencedByRole : ::COSS::CosCompoundExternalization::Role, ::COSS::CosReference::ReferencedByRole {}; }; // PIDL for CosTSInteroperation Module, p 10-59 // CORBAservices, Transaction Service V1.0, 3/94 module CosTSInteroperation { // PIDL struct otid_t { long formatID; /*format identifier. 0 is OSI TP */ long bequal_length; sequence <octet> tid; }; struct TransIdentity { ::COSS::CosTransactions::Coordinator coordinator; ::COSS::CosTransactions::Terminator terminator; otid_t otid; }; struct PropagationContext { unsigned long timeout; TransIdentity current; sequence <TransIdentity> parents; any implementation_specific_data; }; }; // PIDL for CosTSPortability Module, p 10-63 // CORBAservices, Transaction Service V1.0, 3/94 module CosTSPortability { // PIDL typedef long ReqId; interface Sender { void sending_request(in ReqId id, out ::COSS::CosTSInteroperation::PropagationContext ctx); void received_reply(in ReqId id, in ::COSS::CosTSInteroperation::PropagationContext ctx, in ::CORBA::Environment env); }; interface Receiver { void received_request(in ReqId id, in ::COSS::CosTSInteroperation::PropagationContext ctx); void sending_reply(in ReqId id, out::COSS::CosTSInteroperation::PropagationContext ctx); }; }; // CosCompoundLifeCycle Module, p 6-30 CORBAservices, // Life Cycle Service V1.0, 3/94 // #include <LifeCycle.idl> // #include <Relationships.idl> // #include <Graphs.idl> module CosCompoundLifeCycle { interface OperationsFactory; interface Operations; interface Node; interface Role; interface Relationship; interface PropagationCriteriaFactory; enum Operation {copy, move, remove}; struct RelationshipHandle { Relationship the_relationship; ::COSS::CosObjectIdentity::ObjectIdentifier constant_random_id; }; interface OperationsFactory { Operations create_compound_operations(); }; interface Operations { Node copy ( in Node starting_node, in ::COSS::CosLifeCycle::FactoryFinder there, in ::COSS::CosLifeCycle::Criteria the_criteria) raises (::COSS::CosLifeCycle::NoFactory, ::COSS::CosLifeCycle::NotCopyable, ::COSS::CosLifeCycle::InvalidCriteria, ::COSS::CosLifeCycle::CannotMeetCriteria); void move ( in Node starting_node, in ::COSS::CosLifeCycle::FactoryFinder there, in ::COSS::CosLifeCycle::Criteria the_criteria) raises (::COSS::CosLifeCycle::NoFactory, ::COSS::CosLifeCycle::NotMovable, ::COSS::CosLifeCycle::InvalidCriteria, ::COSS::CosLifeCycle::CannotMeetCriteria); void remove (in Node starting_node) raises (::COSS::CosLifeCycle::NotRemovable); void destroy(); }; interface Node : ::COSS::CosGraphs::Node { exception NotLifeCycleObject {}; void copy_node ( in ::COSS::CosLifeCycle::FactoryFinder there, in ::COSS::CosLifeCycle::Criteria the_criteria, out Node new_node, out ::COSS::CosGraphs::Node::Roles roles_of_new_node) raises (::COSS::CosLifeCycle::NoFactory, ::COSS::CosLifeCycle::NotCopyable, ::COSS::CosLifeCycle::InvalidCriteria, ::COSS::CosLifeCycle::CannotMeetCriteria); void move_node (in ::COSS::CosLifeCycle::FactoryFinder there, in ::COSS::CosLifeCycle::Criteria the_criteria) raises (::COSS::CosLifeCycle::NoFactory, ::COSS::CosLifeCycle::NotMovable, ::COSS::CosLifeCycle::InvalidCriteria, ::COSS::CosLifeCycle::CannotMeetCriteria); void remove_node () raises (::COSS::CosLifeCycle::NotRemovable); ::COSS::CosLifeCycle::LifeCycleObject get_life_cycle_object() raises (NotLifeCycleObject); }; interface Role : ::COSS::CosGraphs::Role { Role copy_role (in ::COSS::CosLifeCycle::FactoryFinder there, in ::COSS::CosLifeCycle::Criteria the_criteria) raises (::COSS::CosLifeCycle::NoFactory, ::COSS::CosLifeCycle::NotCopyable, ::COSS::CosLifeCycle::InvalidCriteria, ::COSS::CosLifeCycle::CannotMeetCriteria); void move_role (in ::COSS::CosLifeCycle::FactoryFinder there, in ::COSS::CosLifeCycle::Criteria the_criteria) raises (::COSS::CosLifeCycle::NoFactory, ::COSS::CosLifeCycle::NotMovable, ::COSS::CosLifeCycle::InvalidCriteria, ::COSS::CosLifeCycle::CannotMeetCriteria); ::COSS::CosGraphs::PropagationValue life_cycle_propagation ( in Operation op, in RelationshipHandle rel, in ::COSS::CosRelationships::RoleName to_role_name, out boolean same_for_all); }; interface Relationship : ::COSS::CosRelationships::Relationship { Relationship copy_relationship ( in ::COSS::CosLifeCycle::FactoryFinder there, in ::COSS::CosLifeCycle::Criteria the_criteria, in ::COSS::CosGraphs::NamedRoles new_roles) raises (::COSS::CosLifeCycle::NoFactory, ::COSS::CosLifeCycle::NotCopyable, ::COSS::CosLifeCycle::InvalidCriteria, ::COSS::CosLifeCycle::CannotMeetCriteria); void move_relationship ( in ::COSS::CosLifeCycle::FactoryFinder there, in ::COSS::CosLifeCycle::Criteria the_criteria) raises (::COSS::CosLifeCycle::NoFactory, ::COSS::CosLifeCycle::NotMovable, ::COSS::CosLifeCycle::InvalidCriteria, ::COSS::CosLifeCycle::CannotMeetCriteria); ::COSS::CosGraphs::PropagationValue life_cycle_propagation ( in Operation op, in ::COSS::CosRelationships::RoleName from_role_name, in ::COSS::CosRelationships::RoleName to_role_name, out boolean same_for_all); }; interface PropagationCriteriaFactory { ::COSS::CosGraphs::TraversalCriteria create(in Operation op); }; }; // CosLifeCycleContainment Module, p 6-42 CORBAservices, // Life Cycle Service V1.0, 3/94 // #include <Containment.idl> // #include <CompoundLifeCycle.idl> module CosLifeCycleContainment { interface Relationship : ::COSS::CosCompoundLifeCycle::Relationship, ::COSS::CosContainment::Relationship {}; interface ContainsRole : ::COSS::CosCompoundLifeCycle::Role, ::COSS::CosContainment::ContainsRole {}; interface ContainedInRole : ::COSS::CosCompoundLifeCycle::Role, ::COSS::CosContainment::ContainedInRole {}; }; // CosLifeCycleReference Module, p 6-44 CORBAservices, // Life Cycle Service V1.0, 3/94 // #include <Reference.idl> // #include <CompoundLifeCycle.idl> module CosLifeCycleReference { interface Relationship : ::COSS::CosCompoundLifeCycle::Relationship, ::COSS::CosReference::Relationship {}; interface ReferencesRole : ::COSS::CosCompoundLifeCycle::Role, ::COSS::CosReference::ReferencesRole {}; interface ReferencedByRole : ::COSS::CosCompoundLifeCycle::Role, ::COSS::CosReference::ReferencedByRole {}; }; }; // end module COSS