📄 cosnotifychanneladmin.idl
字号:
};
/// Each proxy is assigned a unique ID by its proxy admin
typedef long ProxyID;
/// Helper type to query or fetch multiple IDs simulatenously
typedef sequence <ProxyID> ProxyIDSeq;
/**
* @enum ClientType
*
* @brief Helper type used to fetch proxies
*/
enum ClientType {
/// The proxy uses the 'any' event format
ANY_EVENT,
/// The proxy uses the 'structured' event format
STRUCTURED_EVENT,
/// The proxy uses the 'sequence' (or batch) event format
SEQUENCE_EVENT
};
/**
* @enum InterFilterGroupOperator
*
* @brief Define how multiple Filters are considered in a proxy
* admin
*/
enum InterFilterGroupOperator {
AND_OP,
OR_OP
};
/// Each proxy admin is assigned a unique number by its EventChannel
typedef long AdminID;
/// List of Admin IDs
typedef sequence<AdminID> AdminIDSeq;
/**
* @exception AdminNotFound
*
* @brief Exception raised if a lookup for a specific Admin ID
* fails.
*/
exception AdminNotFound {};
/**
* @exception ProxyNotFound
*
* @brief Exception raised if a lookup for a specific Proxy ID
* fails.
*/
exception ProxyNotFound {};
/**
* @struct AdminLimit
*
* @brief Helper structure to represent a violation of the limits in
* a proxy admin.
*/
struct AdminLimit {
CosNotification::PropertyName name;
CosNotification::PropertyValue value;
};
/**
* @exception AdminLimitExceeded
*
* @brief Exception raised if a limit in a proxy admin is breached
*/
exception AdminLimitExceeded {
/// The limit that caused the problem.
AdminLimit admin_property_err;
};
/**
* @interface ConsumerAdmin
*
* @brief Interface used to control and obtain the proxies used by
* consumers.
*/
interface ConsumerAdmin
: CosNotification::QoSAdmin
, CosNotifyComm::NotifySubscribe
, CosNotifyFilter::FilterAdmin
, CosEventChannelAdmin::ConsumerAdmin
{
/// The ID assigned to this admin by its event channel
readonly attribute AdminID MyID;
/// The event channel this admin belongs to
readonly attribute EventChannel MyChannel;
/// How are multiple filters interpreted
readonly attribute InterFilterGroupOperator MyOperator;
/// A special mapping filter to change the priority property of
/// events
attribute CosNotifyFilter::MappingFilter priority_filter;
/// A special mapping filter to change the lifetime property of
/// events
attribute CosNotifyFilter::MappingFilter lifetime_filter;
/// Get the complete list of pull proxy suppliers
readonly attribute ProxyIDSeq pull_suppliers;
/// Get the complete list of push proxy suppliers
readonly attribute ProxyIDSeq push_suppliers;
/// Get an specific ProxySupplier
/**
* @param proxy_id The proxy ID that will be retrieved
* @throws ProxyNotFound if the proxy_id is not found in this
* ConsumerAdmin
*/
ProxySupplier get_proxy_supplier (in ProxyID proxy_id)
raises (ProxyNotFound );
/// Create a new pull-style proxy supplier
/**
* @param ctype The event format that the ProxySupplier should
* support
* @param proxy_id The ID assigned to the new proxy supplier
* @return The new ProxySupplier
* @throws AdminLimitExceeded if a limit in this admin is reached,
* such as the maximum number of proxies.
*/
ProxySupplier obtain_notification_pull_supplier (in ClientType ctype,
out ProxyID proxy_id)
raises ( AdminLimitExceeded );
/// Create a new push-style proxy supplier
/**
* @param ctype The event format that the ProxySupplier should
* support
* @param proxy_id The ID assigned to the new proxy supplier
* @return The new ProxySupplier
* @throws AdminLimitExceeded if a limit in this admin is reached,
* such as the maximum number of proxies.
*/
ProxySupplier obtain_notification_push_supplier (in ClientType ctype,
out ProxyID proxy_id)
raises ( AdminLimitExceeded );
/// Destroy the Admin
void destroy();
};
/**
* @interface SupplierAdmin
*
* @brief Interface used to control and obtain the proxies used by
* suppliers.
*/
interface SupplierAdmin
: CosNotification::QoSAdmin
, CosNotifyComm::NotifyPublish
, CosNotifyFilter::FilterAdmin
, CosEventChannelAdmin::SupplierAdmin
{
/// The ID assigned to this admin by its event channel
readonly attribute AdminID MyID;
/// The event channel this admin belongs to
readonly attribute EventChannel MyChannel;
/// How are multiple filters interpreted
readonly attribute InterFilterGroupOperator MyOperator;
/// Get the complete list of pull proxy consumers
readonly attribute ProxyIDSeq pull_consumers;
/// Get the complete list of push proxy consumers
readonly attribute ProxyIDSeq push_consumers;
/// Get an specific ProxyConsumer
/**
* @param proxy_id The proxy ID that will be retrieved
* @throws ProxyNotFound if the proxy_id is not found in this
* SupplierAdmin
*/
ProxyConsumer get_proxy_consumer (in ProxyID proxy_id )
raises ( ProxyNotFound );
/// Create a new pull-style proxy consumer
/**
* @param ctype The event format that the ProxyConsumer should
* support
* @param proxy_id The ID assigned to the new proxy consumer
* @return The new ProxyConsumer
* @throws AdminLimitExceeded if a limit in this admin is reached,
* such as the maximum number of proxies.
*/
ProxyConsumer obtain_notification_pull_consumer (in ClientType ctype,
out ProxyID proxy_id)
raises ( AdminLimitExceeded );
/// Create a new push-style proxy consumer
/**
* @param ctype The event format that the ProxyConsumer should
* support
* @param proxy_id The ID assigned to the new proxy consumer
* @return The new ProxySupplier
* @throws AdminLimitExceeded if a limit in this admin is reached,
* such as the maximum number of proxies.
*/
ProxyConsumer obtain_notification_push_consumer (in ClientType ctype,
out ProxyID proxy_id)
raises ( AdminLimitExceeded );
/// Destroy the Admin
void destroy();
};
/**
* @interface EventChannel
*
* @brief Defines the interface to control an use an event channel
*/
interface EventChannel
: CosNotification::QoSAdmin
, CosNotification::AdminPropertiesAdmin
, CosEventChannelAdmin::EventChannel
{
/// The factory this event channel belongs to
readonly attribute EventChannelFactory MyFactory;
/// The default consumer admin
readonly attribute ConsumerAdmin default_consumer_admin;
/// The default supplier admin
readonly attribute SupplierAdmin default_supplier_admin;
/// The default filter factory for this event channel
readonly attribute CosNotifyFilter::FilterFactory default_filter_factory;
/// Create a new consumer admin
/**
* @param op Defines how multiple filters would be interpreted in
* the new consumer admin
* @param id Returns the ID assigned to the new consumer admin
* @return The new consumer admin
*/
ConsumerAdmin new_for_consumers(in InterFilterGroupOperator op,
out AdminID id );
/// Create a new supplier admin
/**
* @param op Defines how multiple filters would be interpreted in
* the new supplier admin
* @param id Returns the ID assigned to the new supplier admin
* @return The new supplier admin
*/
SupplierAdmin new_for_suppliers(in InterFilterGroupOperator op,
out AdminID id );
/// Fetch an specific consumer admin based on its ID
/**
* @param id The id of the consumer that should be returned
* @return The consumer admin assigned the given ID
* @throws AdminNotFound if there is no consumer admin with the ID
* provided
*/
ConsumerAdmin get_consumeradmin ( in AdminID id )
raises (AdminNotFound);
/// Fetch an specific supplier admin based on its ID
/**
* @param id The id of the supplier that should be returned
* @return The supplier admin assigned the given ID
* @throws AdminNotFound if there is no supplier admin with the ID
* provided
*/
SupplierAdmin get_supplieradmin ( in AdminID id )
raises (AdminNotFound);
/// Get the IDs of all the consumer admins
AdminIDSeq get_all_consumeradmins();
/// Get the IDs of all the supplier admins
AdminIDSeq get_all_supplieradmins();
};
/// Each event channel is assigned a unique ID by its factory
typedef long ChannelID;
/// Helper type used to return the complete list of event channel
/// IDs
typedef sequence<ChannelID> ChannelIDSeq;
/**
* @exception ChannelNotFound
*
* @brief Exception raised if an specific ChannelID is not found.
*/
exception ChannelNotFound {};
/**
* @interface EventChannelFactory
*
* @brief Defines the interface used to build event channels
*/
interface EventChannelFactory {
/// Create a new event channel
/**
* @param initial_qos Configure the initial QoS properties of the
* new EventChannel
* @param initial_admin Configure the initial Admin properties of
* the new EventChannel
* @param id Returns the ID assigned to the new EventChannel
* @return The new event channel
* @throws CosNotification::UnsupportedQoS if the requested QoS
* properties cannot be satisfied or are invalid
* @throws CosNotification::UnsupportedAdmin if the requested
* admin properties cannot be satisfied or are invalid
*/
EventChannel create_channel (in CosNotification::QoSProperties initial_qos,
in CosNotification::AdminProperties initial_admin,
out ChannelID id)
raises(CosNotification::UnsupportedQoS,
CosNotification::UnsupportedAdmin );
/// Get the complete list of event channels in this factory
ChannelIDSeq get_all_channels();
/// Get an event channel given its ID
/**
* @param id The ID of the event channel the application wants
* @return The event channel
* @throws ChannelNotFound if the give ID is unknown on this
* factory
*/
EventChannel get_event_channel ( in ChannelID id )
raises (ChannelNotFound);
};
};
#pragma prefix ""
#endif /* _COS_NOTIFY_CHANNEL_ADMIN_IDL_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -