// -*- IDL -*- //============================================================================= /** * @file FtRtecEventChannelAdmin.idl * * @author Huang-Ming Huang */ //============================================================================= #ifndef TAO_FTRTEC_EVENTCHANNELADMIN_IDL #define TAO_FTRTEC_EVENTCHANNELADMIN_IDL #include "orbsvcs/RtecEventChannelAdmin.idl" #include "FTRT.idl" #include "FTRT_GroupManager.idl" #include "FtRtecEventComm.idl" module FtRtecEventChannelAdmin { typedef FtRtecEventComm::ObjectId ObjectId; struct ProxyPushConsumerConnectionInfo { RtecEventComm::PushSupplier push_supplier; RtecEventChannelAdmin::SupplierQOS qos; }; union ProxyPushConsumerConnectionParamter switch (short) { case 0: default: ProxyPushConsumerConnectionInfo info; }; /* struct ProxyPushConsumerConnectionParamter { ProxyPushConsumerConnectionInfo info; }; */ struct ProxyPushConsumerStat { ObjectId object_id; ProxyPushConsumerConnectionParamter parameter; }; struct ProxyPushSupplierConnectionInfo { RtecEventComm::PushConsumer push_consumer; RtecEventChannelAdmin::ConsumerQOS qos; }; union ProxyPushSupplierConnectionParamter switch (short) { case 0: default: ProxyPushSupplierConnectionInfo info; }; /* struct ProxyPushSupplierConnectionParamter { ProxyPushSupplierConnectionInfo info; }; */ struct ProxyPushSupplierStat { ObjectId object_id; boolean suspended; ProxyPushSupplierConnectionParamter parameter; }; typedef sequence ProxyConsumerStates; typedef sequence ProxySupplierStates; struct ConsumerAdminState { ProxySupplierStates proxies; }; struct SupplierAdminState { ProxyConsumerStates proxies; }; struct CachedResult { long retention_id; any result; }; struct CacheEntry { string client_id; CachedResult cached_result; }; typedef sequence CachedOptionResults; struct EventChannelState { CachedOptionResults cached_operation_results; SupplierAdminState supplier_admin_state; ConsumerAdminState consumer_admin_state; }; struct Connect_push_consumer_param { RtecEventComm::PushConsumer push_consumer; RtecEventChannelAdmin::ConsumerQOS qos; }; struct Connect_push_supplier_param { RtecEventComm::PushSupplier push_supplier; RtecEventChannelAdmin::SupplierQOS qos; }; enum OperationType { OBTAIN_PUSH_SUPPLIER, OBTAIN_PUSH_CONSUMER, DISCONNECT_PUSH_SUPPLIER, DISCONNECT_PUSH_CONSUMER, SUSPEND_CONNECTION, RESUME_CONNECTION, CONNECT_PUSH_SUPPLIER, CONNECT_PUSH_CONSUMER }; union OperationParam switch(OperationType) { case CONNECT_PUSH_SUPPLIER: Connect_push_supplier_param connect_supplier_param; case CONNECT_PUSH_CONSUMER: Connect_push_consumer_param connect_consumer_param; }; struct Operation { ObjectId object_id; OperationParam param; }; interface EventChannelFacade : FtRtecEventComm::PushConsumer { /** * Directly connect to push consumer. This method is * equivalent to the effect of executing the following * 3 methods. * * consumer_admin = ec->for_consumers(); * proxy_supplier = consumer_admin->obtain_push_supplier(); * proxy_supplier->connect_push_consumer(push_consumer, * qos); * * @returns the ObjectId of proxy_push_supplier */ ObjectId connect_push_consumer( in RtecEventComm::PushConsumer push_consumer, in RtecEventChannelAdmin::ConsumerQOS qos) raises(RtecEventChannelAdmin::TypeError); /** * Directly connect to push supplier. This method is * equivalent to the effect of executing the following * 3 methods. * * supplier_admin = ec->for_suppliers(); * push_consumer = supplier_admin->obtain_push_supplier(); * push_consumer->connect_push_consumer(proxy_supplier, * qos); * * @returns the ObjectId of proxy_push_consumer */ ObjectId connect_push_supplier( in RtecEventComm::PushSupplier push_supplier, in RtecEventChannelAdmin::SupplierQOS qos); void disconnect_push_supplier(in ObjectId oid) raises(FtRtecEventComm::InvalidObjectID); void disconnect_push_consumer(in ObjectId oid) raises(FtRtecEventComm::InvalidObjectID); void suspend_push_supplier(in ObjectId oid) raises(FtRtecEventComm::InvalidObjectID); void resume_push_supplier(in ObjectId oid) raises(FtRtecEventComm::InvalidObjectID); }; exception InvalidState{}; interface EventChannel : RtecEventChannelAdmin::EventChannel , EventChannelFacade , FTRT::Updateable , FTRT::ObjectGroupManager { }; typedef sequence EventChannelList; }; #endif