#ifndef _COS_NOTIFY_COMM_IDL #define _COS_NOTIFY_COMM_IDL #include "CosNotification.idl" #include "CosEventComm.idl" #pragma prefix "omg.org" module CosNotifyComm { exception InvalidEventType { CosNotification::EventType type; }; interface NotifyPublish { void offer_change ( in CosNotification::EventTypeSeq added, in CosNotification::EventTypeSeq removed ) raises ( InvalidEventType ); }; // NotifyPublish interface NotifySubscribe { void subscription_change( in CosNotification::EventTypeSeq added, in CosNotification::EventTypeSeq removed ) raises ( InvalidEventType ); }; // NotifySubscribe interface StructuredPushConsumer : NotifyPublish { // NOTE: If transactional semantics are desired, a transactional // variant of this interface should be implemented void push_structured_event( in CosNotification::StructuredEvent notification) raises(CosEventComm::Disconnected); void disconnect_structured_push_consumer(); }; // StructuredPushConsumer interface StructuredPullConsumer : NotifyPublish { void disconnect_structured_pull_consumer(); }; // StructuredPullConsumer interface StructuredPullSupplier : NotifySubscribe { // NOTE: If transactional semantics are desired, a transactional // variant of this interface should be implemented CosNotification::StructuredEvent pull_structured_event() raises(CosEventComm::Disconnected); CosNotification::StructuredEvent try_pull_structured_event( out boolean has_event) raises(CosEventComm::Disconnected); void disconnect_structured_pull_supplier(); }; // StructuredPullSupplier interface StructuredPushSupplier : NotifySubscribe { void disconnect_structured_push_supplier(); }; // StructuredPushSupplier interface SequencePushConsumer : NotifyPublish { // NOTE: If transactional semantics are desired, a transactional // variant of this interface should be implemented void push_structured_events( in CosNotification::EventBatch notifications) raises(CosEventComm::Disconnected); void disconnect_sequence_push_consumer(); }; // SequencePushConsumer interface SequencePullConsumer : NotifyPublish { void disconnect_sequence_pull_consumer(); }; // SequencePullConsumer interface SequencePullSupplier : NotifySubscribe { // NOTE: If transactional semantics are desired, a transactional // variant of this interface should be implemented CosNotification::EventBatch pull_structured_events( in long max_number ) raises(CosEventComm::Disconnected); CosNotification::StructuredEvent try_pull_structured_events( in long max_number, out boolean has_event) raises(CosEventComm::Disconnected); void disconnect_sequence_pull_supplier(); }; // SequencePullSupplier interface SequencePushSupplier : NotifySubscribe { void disconnect_sequence_push_supplier(); }; // SequencePushSupplier }; // CosNotifyComm #endif