TAO_EC_Basic_ObserverStrategy Class Reference

A simple observer strategy. More...

#include <EC_ObserverStrategy.h>

Inheritance diagram for TAO_EC_Basic_ObserverStrategy:

Inheritance graph
[legend]
Collaboration diagram for TAO_EC_Basic_ObserverStrategy:

Collaboration graph
[legend]
List of all members.

Public Types

typedef ACE_Map_Manager< RtecEventChannelAdmin::Observer_Handle,
Observer_Entry, ACE_Null_Mutex
Observer_Map
typedef ACE_Map_Iterator<
RtecEventChannelAdmin::Observer_Handle,
Observer_Entry, ACE_Null_Mutex
Observer_Map_Iterator
typedef ACE_RB_Tree< RtecEventComm::EventHeader,
int, Header_Compare, ACE_Null_Mutex
Headers
typedef ACE_RB_Tree_Iterator<
RtecEventComm::EventHeader,
int, Header_Compare, ACE_Null_Mutex
HeadersIterator

Public Member Functions

 TAO_EC_Basic_ObserverStrategy (TAO_EC_Event_Channel_Base *ec, ACE_Lock *lock)
 Constructor.
virtual ~TAO_EC_Basic_ObserverStrategy (void)
 Destructor.
virtual RtecEventChannelAdmin::Observer_Handle append_observer (RtecEventChannelAdmin::Observer_ptr ACE_ENV_ARG_DECL) throw ( CORBA::SystemException, RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR, RtecEventChannelAdmin::EventChannel::CANT_APPEND_OBSERVER)
 The basic methods to support the EC strategies.
virtual void remove_observer (RtecEventChannelAdmin::Observer_Handle ACE_ENV_ARG_DECL) throw ( CORBA::SystemException, RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR, RtecEventChannelAdmin::EventChannel::CANT_REMOVE_OBSERVER)
virtual void connected (TAO_EC_ProxyPushConsumer *ACE_ENV_ARG_DECL_NOT_USED)
virtual void disconnected (TAO_EC_ProxyPushConsumer *ACE_ENV_ARG_DECL_NOT_USED)
virtual void connected (TAO_EC_ProxyPushSupplier *ACE_ENV_ARG_DECL_NOT_USED)
virtual void disconnected (TAO_EC_ProxyPushSupplier *ACE_ENV_ARG_DECL_NOT_USED)

Protected Member Functions

virtual void consumer_qos_update (TAO_EC_ProxyPushSupplier *supplier ACE_ENV_ARG_DECL)
 Recompute EC consumer subscriptions and send them out to all observers.
virtual void supplier_qos_update (TAO_EC_ProxyPushConsumer *consumer ACE_ENV_ARG_DECL)
 Recompute EC supplier publications and send them out to all observers.
void fill_qos (RtecEventChannelAdmin::ConsumerQOS &qos ACE_ENV_ARG_DECL)
 Compute consumer QOS.
void fill_qos (RtecEventChannelAdmin::SupplierQOS &qos ACE_ENV_ARG_DECL)
 Compute supplier QOS.
int create_observer_list (RtecEventChannelAdmin::Observer_var *&lst ACE_ENV_ARG_DECL)

Protected Attributes

TAO_EC_Event_Channel_Baseevent_channel_
 The event channel.
ACE_Locklock_
 The lock.
RtecEventChannelAdmin::Observer_Handle handle_generator_
Observer_Map observers_
 Keep the set of Observers.

Classes

struct  Header_Compare
struct  Observer_Entry
 The data kept for each observer. More...

Detailed Description

A simple observer strategy.

This class simply keeps the information about the current list of observers, whenever the list of consumers and/or suppliers changes in queries the EC, computes the global subscription and/or publication list and sends the update message to all the observers.

Memory Management

It assumes ownership of the lock, but not of the Event_Channel.


Member Typedef Documentation

typedef ACE_RB_Tree<RtecEventComm::EventHeader,int,Header_Compare,ACE_Null_Mutex> TAO_EC_Basic_ObserverStrategy::Headers
 

typedef ACE_RB_Tree_Iterator<RtecEventComm::EventHeader,int,Header_Compare,ACE_Null_Mutex> TAO_EC_Basic_ObserverStrategy::HeadersIterator
 

typedef ACE_Map_Manager<RtecEventChannelAdmin::Observer_Handle,Observer_Entry,ACE_Null_Mutex> TAO_EC_Basic_ObserverStrategy::Observer_Map
 

typedef ACE_Map_Iterator<RtecEventChannelAdmin::Observer_Handle,Observer_Entry,ACE_Null_Mutex> TAO_EC_Basic_ObserverStrategy::Observer_Map_Iterator
 


Constructor & Destructor Documentation

ACE_INLINE TAO_EC_Basic_ObserverStrategy::TAO_EC_Basic_ObserverStrategy TAO_EC_Event_Channel_Base ec,
ACE_Lock lock
 

Constructor.

TAO_EC_Basic_ObserverStrategy::~TAO_EC_Basic_ObserverStrategy void   )  [virtual]
 

Destructor.


Member Function Documentation

virtual RtecEventChannelAdmin::Observer_Handle TAO_EC_Basic_ObserverStrategy::append_observer RtecEventChannelAdmin::Observer_ptr  ACE_ENV_ARG_DECL  )  throw ( CORBA::SystemException, RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR, RtecEventChannelAdmin::EventChannel::CANT_APPEND_OBSERVER) [virtual]
 

The basic methods to support the EC strategies.

Implements TAO_EC_ObserverStrategy.

virtual void TAO_EC_Basic_ObserverStrategy::connected TAO_EC_ProxyPushSupplier ACE_ENV_ARG_DECL_NOT_USED  )  [virtual]
 

Used by the EC to inform the ObserverStrategy that a Supplier has connected or disconnected from it.

Implements TAO_EC_ObserverStrategy.

virtual void TAO_EC_Basic_ObserverStrategy::connected TAO_EC_ProxyPushConsumer ACE_ENV_ARG_DECL_NOT_USED  )  [virtual]
 

Used by the EC to inform the ObserverStrategy that a Consumer has connected or disconnected from it.

Implements TAO_EC_ObserverStrategy.

void TAO_EC_Basic_ObserverStrategy::consumer_qos_update TAO_EC_ProxyPushSupplier *supplier  ACE_ENV_ARG_DECL  )  [protected, virtual]
 

Recompute EC consumer subscriptions and send them out to all observers.

Reimplemented in TAO_EC_Reactive_ObserverStrategy.

int TAO_EC_Basic_ObserverStrategy::create_observer_list RtecEventChannelAdmin::Observer_var *&lst  ACE_ENV_ARG_DECL  )  [protected]
 

Copies all current observers into an array and passes it back to the caller through lst. Returns the size of the array.

virtual void TAO_EC_Basic_ObserverStrategy::disconnected TAO_EC_ProxyPushSupplier ACE_ENV_ARG_DECL_NOT_USED  )  [virtual]
 

Implements TAO_EC_ObserverStrategy.

virtual void TAO_EC_Basic_ObserverStrategy::disconnected TAO_EC_ProxyPushConsumer ACE_ENV_ARG_DECL_NOT_USED  )  [virtual]
 

Implements TAO_EC_ObserverStrategy.

void TAO_EC_Basic_ObserverStrategy::fill_qos RtecEventChannelAdmin::SupplierQOS &qos  ACE_ENV_ARG_DECL  )  [protected]
 

Compute supplier QOS.

void TAO_EC_Basic_ObserverStrategy::fill_qos RtecEventChannelAdmin::ConsumerQOS &qos  ACE_ENV_ARG_DECL  )  [protected]
 

Compute consumer QOS.

virtual void TAO_EC_Basic_ObserverStrategy::remove_observer RtecEventChannelAdmin::Observer_Handle  ACE_ENV_ARG_DECL  )  throw ( CORBA::SystemException, RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR, RtecEventChannelAdmin::EventChannel::CANT_REMOVE_OBSERVER) [virtual]
 

Implements TAO_EC_ObserverStrategy.

void TAO_EC_Basic_ObserverStrategy::supplier_qos_update TAO_EC_ProxyPushConsumer *consumer  ACE_ENV_ARG_DECL  )  [protected, virtual]
 

Recompute EC supplier publications and send them out to all observers.

Reimplemented in TAO_EC_Reactive_ObserverStrategy.


Member Data Documentation

TAO_EC_Event_Channel_Base* TAO_EC_Basic_ObserverStrategy::event_channel_ [protected]
 

The event channel.

RtecEventChannelAdmin::Observer_Handle TAO_EC_Basic_ObserverStrategy::handle_generator_ [protected]
 

The handles are generated in sequential order, but are opaque to the client.

ACE_Lock* TAO_EC_Basic_ObserverStrategy::lock_ [protected]
 

The lock.

Observer_Map TAO_EC_Basic_ObserverStrategy::observers_ [protected]
 

Keep the set of Observers.


The documentation for this class was generated from the following files:
Generated on Wed Nov 23 16:18:28 2005 for TAO_RTEvent by  doxygen 1.4.5