Main Page Namespace List Class Hierarchy Alphabetical List Compound List File List Namespace Members Compound Members File Members Related Pages

# TAO_EC_Basic_ObserverStrategy Class Reference

A simple observer strategy. More...

`#include <EC_ObserverStrategy.h>`

Inheritance diagram for TAO_EC_Basic_ObserverStrategy:

[legend]
Collaboration diagram for TAO_EC_Basic_ObserverStrategy:

[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 Methods

| 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 Methods

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_Base * | event_channel_
| The event channel.
ACE_Lock * | lock_
| The lock.
RtecEventChannelAdmin::Observer_Handle | handle_generator_
Observer_Map | observers_
| Keep the set of Observers.

## 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

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.

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:

- EC_ObserverStrategy.h
- EC_ObserverStrategy.cpp
- EC_ObserverStrategy.i