📄 cosnotifychanneladmin.idl
字号:
/**
* @file CosNotifyChannelAdmin.idl
*
* @brief Define the CosNotifyChannel module
*
* CosNotifyChannelAdmin.idl,v 1.5 2002/08/04 13:38:04 jwillemsen Exp
*
* This module is taken from the standard CORBA Notification Service
* 1.0, as described in:
*
* http://www.omg.org/technology/documents/formal/notification_service.htm
*
* In particular the following two documents were used:
* formal/2000-06-20
* formal/01-03-03
*
* @author Pradeep Gore <pradeep@cs.wustl.edu>
*/
#ifndef _COS_NOTIFY_CHANNEL_ADMIN_IDL_
#define _COS_NOTIFY_CHANNEL_ADMIN_IDL_
#include "CosNotification.idl"
#include "CosNotifyFilter.idl"
#include "CosNotifyComm.idl"
#include "CosEventChannelAdmin.idl"
#pragma prefix "omg.org"
/**
* @namespace CosNotifyChannelAdmin
*
* @brief Defines the interfaces to connect and manipulate the
* Notification Service.
*/
module CosNotifyChannelAdmin
{
/**
* @exception ConnectionAlreadyActive
*
* @brief Exception Raised if an attempt is made to resume a
* connection that has not been suspended.
*/
exception ConnectionAlreadyActive {};
/**
* @exception ConnectionAlreadyInactive
*
* @brief Exception raised if an attempt is made to suspend a
* connection already suspended.
*/
exception ConnectionAlreadyInactive {};
/**
* @exception NotConnected
*
* @brief Exception raised if an attempt is made to suspend or
* resume a proxy that has not been connected.
*/
exception NotConnected {};
// Forward declarations
interface ConsumerAdmin;
interface SupplierAdmin;
interface EventChannel;
interface EventChannelFactory;
/**
* @enum ProxyType
*
* @brief Helper typedef to inspect the types of proxies connected
* to an EventChannel
*/
enum ProxyType {
/// A push-style proxy that uses the 'any' format
PUSH_ANY,
/// A pull-style proxy that uses the 'any' format
PULL_ANY,
/// A push-style proxy that uses structured events
PUSH_STRUCTURED,
/// A pull-style proxy that uses structured events
PULL_STRUCTURED,
/// A push-style proxy that uses event batches
PUSH_SEQUENCE,
/// A pull-style proxy that uses event batches
PULL_SEQUENCE,
/// A typed, push-style proxy
PUSH_TYPED,
/// A typed, pull-style proxy
PULL_TYPED
};
/**
* @enum ObtainInfoMode
*
* @brief Define the modes to fetch subscriptions and publication
* lists from the Notification Service.
*/
enum ObtainInfoMode {
/// Get all the current subscriptions/publications, do not send
/// updates to the peer
ALL_NOW_UPDATES_OFF,
/// Get all the current subscriptions/publications, send updates
/// to the peer
ALL_NOW_UPDATES_ON,
/// Do not get any of the current subscriptions/publications, do
/// not send updates to the peer either
NONE_NOW_UPDATES_OFF,
/// Do not get any of the current subscriptions/publications, but
/// send updates to the peer
NONE_NOW_UPDATES_ON
};
/**
* @interface ProxyConsumer
*
* @brief Defines the interface shared by all consumer proxies
*
* Consumer proxies are used by suppliers to provide events into the
* Notification Service, this interface captures the shared
* operations in all those proxies.
*/
interface ProxyConsumer
: CosNotification::QoSAdmin
, CosNotifyFilter::FilterAdmin
{
/// The style and event format for this proxy
readonly attribute ProxyType MyType;
/// The SupplierAdmin this proxy belongs to
readonly attribute SupplierAdmin MyAdmin;
/// Get the list of event types that this proxy could potentially
/// forward to any consumer connected to the EventChannel
/**
* @param mode Describe how the subscriptions should be fetched
* @return The list of current subscriptions, if requested in the
* mode argument
*/
CosNotification::EventTypeSeq obtain_subscription_types(
in ObtainInfoMode mode );
/// Validate a list of QoS properties for an event
/**
* Suppliers can provide events with specific QoS properties, the
* following operation allows suppliers to verify if a given set
* of QoS properties would be honored by the proxy.
*
* @param required_qos The QoS properties required by the supplier
* @param available_qos If the QoS properties required are
* supported this argument returns any other QoS properties that
* the application may set without breaking the proxy
* capabilities.
* @throws CosNotification::UnsupportedQoS if the QoS properties
* required cannot be supported. The exception describes the
* problems and any legal values in detail.
*/
void validate_event_qos (
in CosNotification::QoSProperties required_qos,
out CosNotification::NamedPropertyRangeSeq available_qos)
raises (CosNotification::UnsupportedQoS);
};
/**
* @interface ProxySupplier
*
* @brief Defines the interface shared by all supplier proxies
*
* Supplier proxies are used by consumers to communicate with the
* Notification Service, this interface captures the shared
* operations in all those proxies.
*/
interface ProxySupplier
: CosNotification::QoSAdmin
, CosNotifyFilter::FilterAdmin
{
/// The style and event format for this proxy
readonly attribute ProxyType MyType;
/// The ConsumerAdmin this proxy belongs to
readonly attribute ConsumerAdmin MyAdmin;
/// Get and set the mapping filter used to change the priority
/// property for this proxy.
/**
* The filter is initialized to the nil reference
*/
attribute CosNotifyFilter::MappingFilter priority_filter;
/// Get and set the mapping filter used to change the lifetime
/// property for this proxy.
/**
* The filter is initialized to the nil reference
*/
attribute CosNotifyFilter::MappingFilter lifetime_filter;
/// Get the list of event types that this proxy could potentially
/// forward to its connected supplier
/**
* @param mode Describe how the publications should be fetched
* @return The list of current subscriptions, if requested in the
* mode argument
*/
CosNotification::EventTypeSeq obtain_offered_types(
in ObtainInfoMode mode );
/// Validate a list of QoS properties for an event
/**
* Applications send events with specific QoS properties, the
* following operation allows consumers to verify if a given set
* of QoS properties would be honored by the proxy.
*
* @param required_qos The QoS properties required by the supplier
* @param available_qos If the QoS properties required are
* supported this argument returns any other QoS properties that
* the application may set without breaking the proxy
* capabilities.
* @throws CosNotification::UnsupportedQoS if the QoS properties
* required cannot be supported. The exception describes the
* problems and any legal values in detail.
*/
void validate_event_qos (
in CosNotification::QoSProperties required_qos,
out CosNotification::NamedPropertyRangeSeq available_qos)
raises (CosNotification::UnsupportedQoS);
};
/**
* @interface ProxyPushConsumer
*
* @brief Defines the interface provided for push-style suppliers
* using the 'any' event format.
*/
interface ProxyPushConsumer
: ProxyConsumer
, CosNotifyComm::PushConsumer
{
/// Connect a supplier to the proxy
/**
* Suppliers cannot push events into a ProxyPushConsumer until
* this method is invoked.
*
* @param push_supplier the callback object used to inform the
* application if the event channel is destroyed. If the
* argument is nil no destroy notification is provided.
* @throws CosEventChannelAdmin::AlreadyConnected if the proxy is
* already connected, i.e. if this operation is invoked more than
* one time.
*/
void connect_any_push_supplier (
in CosEventComm::PushSupplier push_supplier)
raises(CosEventChannelAdmin::AlreadyConnected);
};
/**
* @interface StructuredProxyPushConsumer
*
* @brief Defines the interface provided for push-style suppliers
* using the 'structured' event format.
*/
interface StructuredProxyPushConsumer
: ProxyConsumer
, CosNotifyComm::StructuredPushConsumer
{
/// Connect a supplier to the proxy
/**
* Suppliers cannot push events into a ProxyPushConsumer until
* this method is invoked.
*
* @param push_supplier the callback object used to inform the
* application if the event channel is destroyed. If the
* argument is nil no destroy notification is provided.
* @throws CosEventChannelAdmin::AlreadyConnected if the proxy is
* already connected, i.e. if this operation is invoked more than
* one time.
*/
void connect_structured_push_supplier (
in CosNotifyComm::StructuredPushSupplier push_supplier)
raises(CosEventChannelAdmin::AlreadyConnected);
};
/**
* @interface SequenceProxyPushConsumer
*
* @brief Defines the interface provided for push-style suppliers
* using the 'batched' event format.
*/
interface SequenceProxyPushConsumer
: ProxyConsumer
, CosNotifyComm::SequencePushConsumer
{
/// Connect a supplier to the proxy
/**
* Suppliers cannot push events into a ProxyPushConsumer until
* this method is invoked.
*
* @param push_supplier the callback object used to inform the
* application if the event channel is destroyed. If the
* argument is nil no destroy notification is provided.
* @throws CosEventChannelAdmin::AlreadyConnected if the proxy is
* already connected, i.e. if this operation is invoked more than
* one time.
*/
void connect_sequence_push_supplier (
in CosNotifyComm::SequencePushSupplier push_supplier)
raises(CosEventChannelAdmin::AlreadyConnected);
};
/**
* @interface ProxyPullSupplier
*
* @brief Defines the interface provided for pull-style consumers
* using the 'any' event format.
*/
interface ProxyPullSupplier
: ProxySupplier
, CosNotifyComm::PullSupplier
{
/// Connect a consumer to the proxy
/**
* The consumer cannot pull events until this operation is invoked.
*
* @param pull_consumer the callback object used to inform the
* application if the event channel is destroyed. If the
* argument is nil no destroy notification is provided.
* @throws CosEventChannelAdmin::AlreadyConnected if the proxy is
* already connected, i.e. if this operation is invoked more than
* one time.
*/
void connect_any_pull_consumer (
in CosEventComm::PullConsumer pull_consumer)
raises(CosEventChannelAdmin::AlreadyConnected);
};
/**
* @interface StructuredProxyPullSupplier
*
* @brief Defines the interface provided for pull-style consumers
* using the 'structured' event format.
*/
interface StructuredProxyPullSupplier
: ProxySupplier
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -