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 ACE_ENV_ARG_DECL)=0
virtual void | reconnected (TAO_EC_ProxyPushSupplier *supplier ACE_ENV_ARG_DECL)=0
virtual void | disconnected (TAO_EC_ProxyPushSupplier *supplier ACE_ENV_ARG_DECL)=0
virtual void | shutdown (ACE_ENV_SINGLE_ARG_DECL)=0
| The event channel is shutting down.
virtual void | push (const RtecEventComm::EventSet &event, TAO_EC_ProxyPushConsumer *consumer ACE_ENV_ARG_DECL)=0
virtual void | push_scheduled_event (RtecEventComm::EventSet &event, const TAO_EC_QOS_Info &event_info ACE_ENV_ARG_DECL)=0
virtual CORBA::ULong | _incr_refcnt (void)=0
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]`

| Implemented in TAO_EC_Per_Supplier_Filter, and TAO_EC_Trivial_Supplier_Filter.

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

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

virtual 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. Implemented in TAO_EC_Per_Supplier_Filter, and TAO_EC_Trivial_Supplier_Filter.

virtual void TAO_EC_Supplier_Filter::connected | ( | TAO_EC_ProxyPushSupplier *supplier | ACE_ENV_ARG_DECL | ) | `[pure virtual]`

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

virtual void TAO_EC_Supplier_Filter::disconnected | ( | TAO_EC_ProxyPushSupplier *supplier | ACE_ENV_ARG_DECL | ) | `[pure virtual]`

| Implemented in TAO_EC_Per_Supplier_Filter, and TAO_EC_Trivial_Supplier_Filter.

virtual void TAO_EC_Supplier_Filter::push | ( | const RtecEventComm::EventSet & | event,
|  | TAO_EC_ProxyPushConsumer *consumer | ACE_ENV_ARG_DECL
| ) | `[pure virtual]`

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

virtual void TAO_EC_Supplier_Filter::push_scheduled_event | ( | RtecEventComm::EventSet & | event,
|  | const TAO_EC_QOS_Info &event_info | ACE_ENV_ARG_DECL
| ) | `[pure virtual]`

| Events are first scheduled by the TAO_EC_Scheduling_Strategy, and then pushed through this class again. Implemented in TAO_EC_Per_Supplier_Filter, and TAO_EC_Trivial_Supplier_Filter.

virtual void TAO_EC_Supplier_Filter::reconnected | ( | TAO_EC_ProxyPushSupplier *supplier | ACE_ENV_ARG_DECL | ) | `[pure virtual]`

| Implemented in TAO_EC_Per_Supplier_Filter, and TAO_EC_Trivial_Supplier_Filter.

virtual void TAO_EC_Supplier_Filter::shutdown | ( | ACE_ENV_SINGLE_ARG_DECL |  | ) | `[pure virtual]`

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

virtual 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.

Implemented in TAO_EC_Per_Supplier_Filter, and TAO_EC_Trivial_Supplier_Filter.

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

- EC_Supplier_Filter.h
- EC_Supplier_Filter.cpp