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

# TAO_EC_Supplier_Filter Class Reference

The strategy to filter close to the supplier. More...

`#include <EC_Supplier_Filter.h>`

Inheritance diagram for TAO_EC_Supplier_Filter

[legend]
List of all members.

## Public Methods
virtual | ~TAO_EC_Supplier_Filter (void)
| Destructor.
virtual void | bind (TAO_EC_ProxyPushConsumer* consumer) = 0
virtual void | unbind (TAO_EC_ProxyPushConsumer* consumer) = 0
virtual void | connected (TAO_EC_ProxyPushSupplier *supplier, CORBA::Environment &env) = 0
| Concrete implementations can use this methods to keep track of the consumers interested in this events.
virtual void | reconnected (TAO_EC_ProxyPushSupplier *supplier, CORBA::Environment &env) = 0
virtual void | disconnected (TAO_EC_ProxyPushSupplier *supplier, CORBA::Environment &env) = 0
virtual void | shutdown (CORBA::Environment &env) = 0
| The event channel is shutting down.
virtual void | push (const RtecEventComm::EventSet &event, CORBA::Environment &) = 0
| The ProxyPushConsumer delegates on this class to actually send the event.
virtual CORBA::ULong | _incr_refcnt (void) = 0
| Increment and decrement the reference count, locking must be provided by the user.
virtual CORBA::ULong | _decr_refcnt (void) = 0

## Detailed Description

The strategy to filter close to the supplier.

After an event is received by the a ProxyPushConsumer it must be dispatched to the right set of ProxyPushSuppliers; determining this set is the task of this class. Notice that this is in fact a filter, and enforces (in part) the subscriptions and publications of the Event Service clients. Several implementations are possible:

- Each ProxyPushConsumer keeps a list of ProxyPushSuppliers, using the subscriptions and publications to find potential matches.
- Each ProxyPushConsumer keeps several such lists, indexed by event type and/or source, this has the advantage of further minimizing the set of ProxyPushSuppliers invoked.
- A single list of consumers is kept (global for the event channel), such a list results is faster updates and requires an smaller memory footprint.
- Multiple global lists are kept, indexed by type and/or source, this is a tradeoff between the solutions above.
- No list is kept, the events are sent to the consumers which must filter out what they want, this is good when no filtering is wanted or when the amount of filtering is coarse i.e. each event goes to a large subset of the ProxyPushSuppliers. Different applications will require to use different implementations of this class; as usual the EC_Factory will create the right instance.

## Constructor & Destructor Documentation

TAO_EC_Supplier_Filter::~TAO_EC_Supplier_Filter ( | void )`[virtual]`

| Destructor.

## Member Function Documentation

virtual CORBA::ULong TAO_EC_Supplier_Filter::_decr_refcnt ( | void )`[pure virtual]`

| Reimplemented in TAO_EC_Per_Supplier_Filter, and TAO_EC_Trivial_Supplier_Filter.

CORBA::ULong TAO_EC_Supplier_Filter::_incr_refcnt ( | void )`[pure virtual]`

| Increment and decrement the reference count, locking must be provided by the user. Reimplemented in TAO_EC_Per_Supplier_Filter, and TAO_EC_Trivial_Supplier_Filter.

void TAO_EC_Supplier_Filter::bind ( | TAO_EC_ProxyPushConsumer * consumer )`[pure virtual]`

| Whenever a ProxyPushConsumer is initialized it calls this method to inform the Supplier_Filter of its identity. Strategies that do not keep ProxyPushConsumer specific information, or that are shared between multiple ProxyPushConsumers can ignore this message. Reimplemented in TAO_EC_Per_Supplier_Filter, and TAO_EC_Trivial_Supplier_Filter.

void TAO_EC_Supplier_Filter::connected ( | TAO_EC_ProxyPushSupplier * supplier,
| CORBA::Environment & env )`[pure virtual]`

| Concrete implementations can use this methods to keep track of the consumers interested in this events. Reimplemented in TAO_EC_Per_Supplier_Filter, and TAO_EC_Trivial_Supplier_Filter.

virtual void TAO_EC_Supplier_Filter::disconnected ( | TAO_EC_ProxyPushSupplier * supplier,
| CORBA::Environment & env )`[pure virtual]`

| Reimplemented in TAO_EC_Per_Supplier_Filter, and TAO_EC_Trivial_Supplier_Filter.

void TAO_EC_Supplier_Filter::push ( | const RtecEventComm::EventSet & event,
| CORBA::Environment & ACE_TRY_ENV )`[pure virtual]`

| The ProxyPushConsumer delegates on this class to actually send the event. Reimplemented in TAO_EC_Per_Supplier_Filter, and TAO_EC_Trivial_Supplier_Filter.

virtual void TAO_EC_Supplier_Filter::reconnected ( | TAO_EC_ProxyPushSupplier * supplier,
| CORBA::Environment & env )`[pure virtual]`

| Reimplemented in TAO_EC_Per_Supplier_Filter, and TAO_EC_Trivial_Supplier_Filter.

void TAO_EC_Supplier_Filter::shutdown ( | CORBA::Environment & env )`[pure virtual]`

| The event channel is shutting down. Reimplemented in TAO_EC_Per_Supplier_Filter, and TAO_EC_Trivial_Supplier_Filter.

void TAO_EC_Supplier_Filter::unbind ( | TAO_EC_ProxyPushConsumer * consumer )`[pure virtual]`

| Wheneve a ProxyPushConsumer is about to be destroyed it calls this method to inform the Supplier_Filter that it should release any resources related to it. Supplier_Filter strategies that are bound to a particular ProxyConsumer can use this opportunity to destroy themselves; filter strategies that do not keep ProxyPushConsumer specific information can simply ignore the message. Reimplemented in TAO_EC_Per_Supplier_Filter, and TAO_EC_Trivial_Supplier_Filter.

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

- EC_Supplier_Filter.h