⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cosnotifychanneladmin.idl

📁 这是广泛使用的通信开源项目,对于大容量,高并发的通讯要求完全能够胜任,他广泛可用于网络游戏医学图像网关的高qos要求.更详细的内容可阅读相应的材料
💻 IDL
📖 第 1 页 / 共 3 页
字号:
/**
 * @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 + -