#include <EC_Per_Supplier_Filter.h>
Public Member Functions | |
TAO_EC_Per_Supplier_Filter (TAO_EC_Event_Channel_Base *ec) | |
Constructor. | |
virtual | ~TAO_EC_Per_Supplier_Filter (void) |
Destructor. | |
virtual void | bind (TAO_EC_ProxyPushConsumer *consumer) |
virtual void | unbind (TAO_EC_ProxyPushConsumer *consumer) |
virtual void | connected (TAO_EC_ProxyPushSupplier *supplier) |
virtual void | reconnected (TAO_EC_ProxyPushSupplier *supplier) |
virtual void | disconnected (TAO_EC_ProxyPushSupplier *supplier) |
virtual void | shutdown (void) |
The event channel is shutting down. | |
virtual void | push (const RtecEventComm::EventSet &event, TAO_EC_ProxyPushConsumer *consumer) |
virtual void | push_scheduled_event (RtecEventComm::EventSet &event, const TAO_EC_QOS_Info &event_info) |
virtual CORBA::ULong | _decr_refcnt (void) |
virtual CORBA::ULong | _incr_refcnt (void) |
Private Attributes | |
TAO_EC_Event_Channel_Base * | event_channel_ |
The event channel, used to locate the set of consumers. | |
TAO_EC_ProxyPushConsumer * | consumer_ |
The proxy for the supplier we are bound to. | |
TAO_ESF_Proxy_Collection < TAO_EC_ProxyPushSupplier > * | collection_ |
CORBA::ULong | refcnt_ |
Reference counting. | |
TAO_SYNCH_MUTEX | lock_ |
Locking. |
This is a filtering strategy for the suppliers. In this particular case we keep a collection of the consumers that could potentially be interested in any event generated by a particular supplier. This minimizes the amount of consumers touched by the EC when dispatching an event.
TAO_EC_Per_Supplier_Filter::TAO_EC_Per_Supplier_Filter | ( | TAO_EC_Event_Channel_Base * | ec | ) |
Constructor.
TAO_EC_Per_Supplier_Filter::~TAO_EC_Per_Supplier_Filter | ( | void | ) | [virtual] |
Destructor.
CORBA::ULong TAO_EC_Per_Supplier_Filter::_decr_refcnt | ( | void | ) | [virtual] |
Implements TAO_EC_Supplier_Filter.
CORBA::ULong TAO_EC_Per_Supplier_Filter::_incr_refcnt | ( | void | ) | [virtual] |
Increment and decrement the reference count, locking must be provided by the user.
Implements TAO_EC_Supplier_Filter.
void TAO_EC_Per_Supplier_Filter::bind | ( | TAO_EC_ProxyPushConsumer * | consumer | ) | [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.
Implements TAO_EC_Supplier_Filter.
void TAO_EC_Per_Supplier_Filter::connected | ( | TAO_EC_ProxyPushSupplier * | supplier | ) | [virtual] |
Concrete implementations can use this methods to keep track of the consumers interested in this events.
Implements TAO_EC_Supplier_Filter.
void TAO_EC_Per_Supplier_Filter::disconnected | ( | TAO_EC_ProxyPushSupplier * | supplier | ) | [virtual] |
Implements TAO_EC_Supplier_Filter.
void TAO_EC_Per_Supplier_Filter::push | ( | const RtecEventComm::EventSet & | event, | |
TAO_EC_ProxyPushConsumer * | consumer | |||
) | [virtual] |
The ProxyPushConsumer delegates on this class to actually send the event.
Implements TAO_EC_Supplier_Filter.
void TAO_EC_Per_Supplier_Filter::push_scheduled_event | ( | RtecEventComm::EventSet & | event, | |
const TAO_EC_QOS_Info & | event_info | |||
) | [virtual] |
Events are first scheduled by the TAO_EC_Scheduling_Strategy, and then pushed through this class again.
Implements TAO_EC_Supplier_Filter.
void TAO_EC_Per_Supplier_Filter::reconnected | ( | TAO_EC_ProxyPushSupplier * | supplier | ) | [virtual] |
Implements TAO_EC_Supplier_Filter.
void TAO_EC_Per_Supplier_Filter::shutdown | ( | void | ) | [virtual] |
void TAO_EC_Per_Supplier_Filter::unbind | ( | TAO_EC_ProxyPushConsumer * | consumer | ) | [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.
Implements TAO_EC_Supplier_Filter.
TAO_ESF_Proxy_Collection<TAO_EC_ProxyPushSupplier>* TAO_EC_Per_Supplier_Filter::collection_ [private] |
Keep the collection of proxies for the consumers that may be interested in our events.
The proxy for the supplier we are bound to.
The event channel, used to locate the set of consumers.
TAO_SYNCH_MUTEX TAO_EC_Per_Supplier_Filter::lock_ [private] |
Locking.
Reference counting.