Outline - PowerPoint PPT Presentation

About This Presentation
Title:

Outline

Description:

No filtering: all notifications sent to an event channel will be forwarded to all consumers ... Lifetime. For consumer only (ConsumerAdmin, or SupplierProxy) ... – PowerPoint PPT presentation

Number of Views:24
Avg rating:3.0/5.0
Slides: 25
Provided by: shangp
Learn more at: http://www.cs.iit.edu
Category:

less

Transcript and Presenter's Notes

Title: Outline


1
Notification Service
  • Outline
  • Notification Service
  • Event Service vs Notification Service
  • Example

2
Shortcomings of Event Services
  • No filtering all notifications sent to an event
    channel will be forwarded to all consumers
  • No Concept of QoS client cannot configure
    channels for their specific requirements
  • No information about required or supplied
    notifications consumer doesnt know about
    existing suppliers and the types of events they
    offer vice versa
  • Unstructured event data event data is wrapped
    into instances of the generic type Any

3
Notification Service Architecture
  • Text book figure 11.7

4
Notification Service vs Event Service
  • Event types
  • Notification Service supports typed, any,
    structured and sequence of structured events
  • Event service only supports typed and any type
    event
  • Admin interface
  • Notification service allows multiple consumer
    admin interface and supplier admin interface
  • Event service only support single admin interface
    (ConsumerAdmin, SupplierAdmin)
  • Channel creation
  • Notification service defines a standard factory
    interface for event channels to allow clients to
    retrieve channels
  • Event service does not have the factory interface

5
Structured Event

domain_name
Fixed Header
type_name
event_name
Event Header
name
value
name
value
Variable Header

name
value
name
value
Filterable Body Fields

Event Body
name
value
remainder_of_body
Remaining Body
6
QoS Properties
  • EventReliability and ConnectionReliability
  • 0 best effort
  • 1 persistent, retransmit after recover
  • Priority
  • Default 0, could be positive, or negtive
  • StartTime, StopTime, Timeout
  • MaxEventsPerConsumer
  • OrderPrority
  • DiscardPolicy
  • MaximumBatchSize
  • PacingInterval
  • Text book Figure 11.9

7
Filters
  • CosNotifyFilterFilter
  • Decide when to forward the event consumer
  • CosNotifyFilterMappingFilter
  • Affact how the QoS values are treated
  • Priority
  • Lifetime
  • For consumer only (ConsumerAdmin, or
    SupplierProxy)

8
CosNotifyChannelAdminEvent Channel
  • interface EventChannel CosNotificationQoSAdmi
    n, CosNotificationAdminPropertiesAdmin,
    CosEventChannelAdminEventChannel
  • readonly attribute EventChannelFactory
    MyFactory
  • readonly attribute ConsumerAdmin
    default_consumer_admin
  • readonly attribute SupplierAdmin
    default_supplier_admin
  • readonly attribute CosNotifyFilterFilterFactory
    default_filter_factory
  • ConsumerAdmin new_for_consumers( in
    InterFilterGroupOperator op, out AdminID id )
  • SupplierAdmin new_for_suppliers( in
    InterFilterGroupOperator op, out AdminID id )
  • ConsumerAdmin get_consumeradmin ( in AdminID id
    ) raises (AdminNotFound)
  • SupplierAdmin get_supplieradmin ( in AdminID id
    ) raises (AdminNotFound)
  • AdminIDSeq get_all_consumeradmins()
  • AdminIDSeq get_all_supplieradmins()

9
CosNotifyChannelAdminConsumerAdmin
  • interface ConsumerAdmin CosNotificationQoSAd
    min, CosNotifyCommNotifySubscribe,
  • CosNotifyFilterFilterAdmin,
    CosEventChannelAdminConsumerAdmin
  • readonly attribute AdminID MyID
  • readonly attribute EventChannel MyChannel
  • readonly attribute InterFilterGroupOperator
    MyOperator
  • attribute CosNotifyFilterMappingFilter
    priority_filter
  • attribute CosNotifyFilterMappingFilter
    lifetime_filter
  • readonly attribute ProxyIDSeq pull_suppliers
  • readonly attribute ProxyIDSeq push_suppliers
  • ProxySupplier get_proxy_supplier ( in ProxyID
    proxy_id ) raises ( ProxyNotFound )
  • ProxySupplier obtain_notification_pull_supplier
    ( in ClientType ctype,
  • out ProxyID proxy_id) raises (
    AdminLimitExceeded )
  • ProxySupplier obtain_notification_push_supplier
    ( in ClientType ctype,
  • out ProxyID proxy_id) raises (
    AdminLimitExceeded )
  • void destroy()

10
CosNotifyChannelAdminSupplierAdmin
  • interface SupplierAdmin CosNotificationQoSAd
    min, CosNotifyCommNotifyPublish,
  • CosNotifyFilterFilterAdmin,
    CosEventChannelAdminSupplierAdmin
  • readonly attribute AdminID MyID
  • readonly attribute EventChannel MyChannel
  • readonly attribute InterFilterGroupOperator
    MyOperator
  • readonly attribute ProxyIDSeq pull_consumers
  • readonly attribute ProxyIDSeq push_consumers
  • ProxyConsumer get_proxy_consumer ( in ProxyID
    proxy_id ) raises ( ProxyNotFound )
  • ProxyConsumer obtain_notification_pull_consumer
    ( in ClientType ctype,
  • out ProxyID proxy_id) raises (
    AdminLimitExceeded )
  • ProxyConsumer obtain_notification_push_consumer
    ( in ClientType ctype,
  • out ProxyID proxy_id) raises (
    AdminLimitExceeded )
  • void destroy()

11
CosNotifyChannelAdminEvent Channel Factory
  • interface EventChannelFactory
  • EventChannel create_channel (
  • in CosNotificationQoSProperties initial_qos,
  • in CosNotificationAdminProperties
    initial_admin,
  • out ChannelID id)
  • raises(CosNotificationUnsupportedQoS,
  • CosNotificationUnsupportedAdmin )
  • ChannelIDSeq get_all_channels()
  • EventChannel get_event_channel ( in
    ChannelID id )
  • raises (ChannelNotFound)
  • // EventChannelFactory

12
CosNotifyFilterFilterAdmin
  • interface FilterAdmin
  • FilterID add_filter ( in Filter new_filter )
  • void remove_filter ( in FilterID filter )
    raises ( FilterNotFound )
  • Filter get_filter ( in FilterID filter ) raises
    ( FilterNotFound )
  • FilterIDSeq get_all_filters()
  • void remove_all_filters()
  • // FilterAdmin

13
CosNotifyFilterFilter
  • interface Filter
  • readonly attribute string constraint_grammar
  • ConstraintInfoSeq add_constraints ( in
    ConstraintExpSeq constraint_list)
  • raises (InvalidConstraint)
  • void modify_constraints ( in ConstraintIDSeq
    del_list, in ConstraintInfoSeq modify_list)
  • raises (InvalidConstraint, ConstraintNotFound)
  • ConstraintInfoSeq get_constraints( in
    ConstraintIDSeq id_list)
  • raises (ConstraintNotFound)
  • ConstraintInfoSeq get_all_constraints()
  • void remove_all_constraints()
  • void destroy()
  • boolean match ( in any filterable_data ) raises
    (UnsupportedFilterableData)
  • boolean match_structured ( in CosNotificationStr
    ucturedEvent filterable_data )
  • raises (UnsupportedFilterableData)
  • boolean match_typed ( in CosNotificationProperty
    Seq filterable_data )
  • raises (UnsupportedFilterableData)
  • CallbackID attach_callback ( in
    CosNotifyCommNotifySubscribe callback)
  • void detach_callback ( in CallbackID callback)
    raises ( CallbackNotFound )

14
CosNotifyFilterFilterFactory
  • interface FilterFactory
  • Filter create_filter ( in string
    constraint_grammar) raises (InvalidGrammar)
  • MappingFilter create_mapping_filter ( in string
    constraint_grammar,
  • in any default_value)
  • raises(InvalidGrammar)
  • // FilterFactory

15
CosNotification
  • module CosNotification
  • typedef string Istring
  • typedef Istring PropertyName
  • typedef any PropertyValue
  • struct Property
  • PropertyName name
  • PropertyValue value
  • typedef sequenceltPropertygt PropertySeq
  • typedef PropertySeq OptionalHeaderFields
  • typedef PropertySeq FilterableEventBody
  • typedef PropertySeq QoSProperties
  • typedef PropertySeq AdminProperties
  • struct EventType
  • string domain_name
  • string type_name

16
CosNotification
  • module CosNotification
  • struct FixedEventHeader
  • EventType event_type
  • string event_name
  • struct EventHeader
  • FixedEventHeader fixed_header
  • OptionalHeaderFields variable_header
  • struct StructuredEvent
  • EventHeader header
  • FilterableEventBody filterable_data
  • any remainder_of_body
  • typedef sequenceltStructuredEventgt EventBatch

17
QoS Admin
  • module CosNotification
  • interface QoSAdmin
  • QoSProperties get_qos()
  • void set_qos ( in QoSProperties qos)
    raises ( UnsupportedQoS )
  • void validate_qos (
  • in QoSProperties required_qos,
  • out NamedPropertyRangeSeq available_qos )
  • raises ( UnsupportedQoS ) // QosAdmin
  • const string MaxQueueLength
    "MaxQueueLength"
  • const string MaxConsumers "MaxConsumers"
  • const string MaxSuppliers "MaxSuppliers"
  • const string RejectNewEvents
    "RejectNewEvents"

18
AdminPropertiesAdmin
  • module CosNotification
  • interface AdminPropertiesAdmin
  • AdminProperties get_admin()
  • void set_admin (in AdminProperties admin)
  • raises ( UnsupportedAdmin )
  • // CosNotification

19
Notification Interface
  • module CosNotifyComm
  • exception InvalidEventType CosNotificationEve
    ntType type
  • interface NotifyPublish
  • void offer_change (
  • in CosNotificationEventTypeSeq added,
  • in CosNotificationEventTypeSeq removed )
  • raises ( InvalidEventType ) //
    NotifyPublish
  • interface NotifySubscribe
  • void subscription_change(
  • in CosNotificationEventTypeSeq added,
  • in CosNotificationEventTypeSeq removed )
  • raises ( InvalidEventType ) //
    NotifySubscribe

20
Consumer and Supplier
  • module CosNotifyComm
  • interface PushConsumer NotifyPublish,
    CosEventCommPushConsumer
  • // PushConsumer
  • interface PullConsumer NotifyPublish,
    CosEventCommPullConsumer
  • // PullConsumer
  • interface PullSupplier NotifySubscribe,
    CosEventCommPullSupplier
  • // PullSupplier
  • interface PushSupplier NotifySubscribe,
    CosEventCommPushSupplier

21
Structured Consumer
  • module CosNotifyComm
  • interface StructuredPushConsumer NotifyPublish
  • void push_structured_event(
  • in CosNotificationStructuredEvent
    notification)
  • raises(CosEventCommDisconnected)
  • void disconnect_structured_push_consumer(
    )
  • // StructuredPushConsumer
  • interface StructuredPullConsumer
    NotifyPublish
  • void disconnect_structured_pull_consumer()
  • // StructuredPullConsumer

22
Structured Supplier
  • module CosNotifyComm
  • interface StructuredPullSupplier
    NotifySubscribe
  • CosNotificationStructuredEvent
    pull_structured_event()
  • raises(CosEventCommDisconnected)
  • CosNotificationStructuredEvent
    try_pull_structured_event(
  • out boolean has_event) raises(CosEventCommDis
    connected)
  • void disconnect_structured_pull_supplier()
  • // StructuredPullSupplier
  • interface StructuredPushSupplier
    NotifySubscribe
  • void disconnect_structured_push_supplier()
  • // StructuredPushSupplier

23
Sequence Consumer
  • module CosNotifyComm
  • interface SequencePushConsumer NotifyPublish
  • void push_structured_events(
  • in CosNotificationEventBatch notifications)
  • raises(CosEventCommDisconnected)
  • void disconnect_sequence_push_consumer()
  • // SequencePushConsumer
  • interface SequencePullConsumer
    NotifyPublish
  • void disconnect_sequence_pull_consumer()
  • // SequencePullConsumer

24
Sequence Supplier
  • module CosNotifyComm
  • interface SequencePullSupplier NotifySubscribe
  • CosNotificationEventBatch
    pull_structured_events(
  • in long max_number ) raises(CosEventCommDisco
    nnected)
  • CosNotificationEventBatch
    try_pull_structured_events(
  • in long max_number,
  • out boolean has_event) raises(CosEventCommDis
    connected)
  • void disconnect_sequence_pull_supplier()
  • // SequencePullSupplier
  • interface SequencePushSupplier
    NotifySubscribe
  • void disconnect_sequence_push_supplier()
  • // SequencePushSupplier
Write a Comment
User Comments (0)
About PowerShow.com