// // $Id$ // #include "RtecEventComm.idl" #include "RtecScheduler.idl" module RtecEventChannelAdmin { exception AlreadyConnected {}; exception TypeError {}; struct Dependency { RtecEventComm::Event event_; RtecScheduler::handle_t rt_info; }; typedef sequence DependencySet; struct ConsumerQOS { DependencySet dependencies; }; struct Publication { RtecEventComm::Event event_; RtecScheduler::Dependency_Info dependency_info_; }; typedef sequence PublicationSet; struct SupplierQOS { PublicationSet publications_; }; interface ProxyPushConsumer: RtecEventComm::PushConsumer { oneway void connect_push_supplier( in RtecEventComm::PushSupplier push_supplier, in SupplierQOS qos); // raises(AlreadyConnected); }; interface ProxyPushSupplier: RtecEventComm::PushSupplier { oneway void connect_push_consumer( in RtecEventComm::PushConsumer push_consumer, in ConsumerQOS qos); // raises(AlreadyConnected, TypeError); }; // TODO: Find out the exception specs for the following interface's // methods. interface ConsumerAdmin { ProxyPushSupplier obtain_push_supplier(); }; interface SupplierAdmin { ProxyPushConsumer obtain_push_consumer(); }; interface EventChannel { exception SYNCHRONIZATION_ERROR {}; exception QOS_ERROR {}; exception SUBSCRIPTION_ERROR {}; exception CORRELATION_ERROR {}; exception DISPATCH_ERROR {}; ConsumerAdmin for_consumers(); SupplierAdmin for_suppliers(); void destroy(); }; };