TAO_RTEvent  3.0.0
Classes | Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
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]

Classes

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

Public Types

typedef ACE_Map_Manager< RtecEventChannelAdmin::Observer_Handle, Observer_Entry, ACE_Null_MutexObserver_Map
 
typedef ACE_Map_Iterator< RtecEventChannelAdmin::Observer_Handle, Observer_Entry, ACE_Null_MutexObserver_Map_Iterator
 
typedef ACE_RB_Tree< RtecEventComm::EventHeader, int, Header_Compare, ACE_Null_MutexHeaders
 
typedef ACE_RB_Tree_Iterator< RtecEventComm::EventHeader, int, Header_Compare, ACE_Null_MutexHeadersIterator
 

Public Member Functions

 TAO_EC_Basic_ObserverStrategy (TAO_EC_Event_Channel_Base *ec, ACE_Lock *lock)
 Constructor. More...
 
virtual ~TAO_EC_Basic_ObserverStrategy ()
 Destructor. More...
 
virtual RtecEventChannelAdmin::Observer_Handle append_observer (RtecEventChannelAdmin::Observer_ptr)
 The basic methods to support the EC strategies. More...
 
virtual void remove_observer (RtecEventChannelAdmin::Observer_Handle)
 
virtual void connected (TAO_EC_ProxyPushConsumer *)
 
virtual void disconnected (TAO_EC_ProxyPushConsumer *)
 
virtual void connected (TAO_EC_ProxyPushSupplier *)
 
virtual void disconnected (TAO_EC_ProxyPushSupplier *)
 
- Public Member Functions inherited from TAO_EC_ObserverStrategy
virtual ~TAO_EC_ObserverStrategy ()
 Destructor. More...
 

Protected Member Functions

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

Protected Attributes

TAO_EC_Event_Channel_Baseevent_channel_
 The event channel. More...
 
ACE_Locklock_
 The lock. More...
 
RtecEventChannelAdmin::Observer_Handle handle_generator_
 
Observer_Map observers_
 Keep the set of Observers. 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

◆ Headers

◆ HeadersIterator

◆ Observer_Map

◆ Observer_Map_Iterator

Constructor & Destructor Documentation

◆ TAO_EC_Basic_ObserverStrategy()

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::~TAO_EC_Basic_ObserverStrategy ( )
virtual

Destructor.

Member Function Documentation

◆ append_observer()

RtecEventChannelAdmin::Observer_Handle TAO_EC_Basic_ObserverStrategy::append_observer ( RtecEventChannelAdmin::Observer_ptr  )
virtual

The basic methods to support the EC strategies.

Implements TAO_EC_ObserverStrategy.

◆ connected() [1/2]

void TAO_EC_Basic_ObserverStrategy::connected ( TAO_EC_ProxyPushConsumer )
virtual

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

Implements TAO_EC_ObserverStrategy.

◆ connected() [2/2]

void TAO_EC_Basic_ObserverStrategy::connected ( TAO_EC_ProxyPushSupplier )
virtual

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

Implements TAO_EC_ObserverStrategy.

◆ consumer_qos_update()

void TAO_EC_Basic_ObserverStrategy::consumer_qos_update ( TAO_EC_ProxyPushSupplier supplier)
protectedvirtual

Helpers.

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

Reimplemented in TAO_EC_Reactive_ObserverStrategy.

◆ create_observer_list()

int TAO_EC_Basic_ObserverStrategy::create_observer_list ( RtecEventChannelAdmin::Observer_var *&  lst)
protected

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

◆ disconnected() [1/2]

void TAO_EC_Basic_ObserverStrategy::disconnected ( TAO_EC_ProxyPushConsumer consumer)
virtual

◆ disconnected() [2/2]

void TAO_EC_Basic_ObserverStrategy::disconnected ( TAO_EC_ProxyPushSupplier supplier)
virtual

◆ fill_qos() [1/2]

void TAO_EC_Basic_ObserverStrategy::fill_qos ( RtecEventChannelAdmin::ConsumerQOS qos)
protected

Compute consumer QOS.

◆ fill_qos() [2/2]

void TAO_EC_Basic_ObserverStrategy::fill_qos ( RtecEventChannelAdmin::SupplierQOS qos)
protected

Compute supplier QOS.

◆ remove_observer()

void TAO_EC_Basic_ObserverStrategy::remove_observer ( RtecEventChannelAdmin::Observer_Handle  handle)
virtual

◆ supplier_qos_update()

void TAO_EC_Basic_ObserverStrategy::supplier_qos_update ( TAO_EC_ProxyPushConsumer consumer)
protectedvirtual

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

Reimplemented in TAO_EC_Reactive_ObserverStrategy.

Member Data Documentation

◆ event_channel_

TAO_EC_Event_Channel_Base* TAO_EC_Basic_ObserverStrategy::event_channel_
protected

The event channel.

◆ handle_generator_

RtecEventChannelAdmin::Observer_Handle TAO_EC_Basic_ObserverStrategy::handle_generator_
protected

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

◆ lock_

ACE_Lock* TAO_EC_Basic_ObserverStrategy::lock_
protected

The lock.

◆ observers_

Observer_Map TAO_EC_Basic_ObserverStrategy::observers_
protected

Keep the set of Observers.


The documentation for this class was generated from the following files: