A class that manages the Consumer and Supplier maps. More...
#include <Event_Manager.h>


Public Types | |
| typedef TAO_Notify_Refcountable_Guard_T < TAO_Notify_Event_Manager > | Ptr |
Public Member Functions | |
| TAO_Notify_Event_Manager (void) | |
| Constructor. | |
| virtual | ~TAO_Notify_Event_Manager () |
| Destructor. | |
| void | release () |
| The release method is called when the refcount reaches 0. | |
| void | init (void) |
| Init. | |
| void | shutdown (void) |
| Init. | |
| void | connect (TAO_Notify_ProxySupplier *proxy_supplier) |
| Connect ProxySupplier. | |
| void | disconnect (TAO_Notify_ProxySupplier *proxy_supplier) |
| Disconnect ProxySupplier. | |
| void | connect (TAO_Notify_ProxyConsumer *proxy_consumer) |
| Connect ProxyConsumer. | |
| void | disconnect (TAO_Notify_ProxyConsumer *proxy_consumer) |
| Disconnect ProxyConsumer. | |
| TAO_Notify_Consumer_Map & | consumer_map (void) |
| Map accessors. | |
| TAO_Notify_Supplier_Map & | supplier_map (void) |
| void | offer_change (TAO_Notify_ProxyConsumer *proxy_consumer, const TAO_Notify_EventTypeSeq &added, const TAO_Notify_EventTypeSeq &removed) |
| Offer change received on <proxy_consumer>. | |
| void | subscription_change (TAO_Notify_ProxySupplier *proxy_supplier, const TAO_Notify_EventTypeSeq &added, const TAO_Notify_EventTypeSeq &removed) |
| Subscription change received on <proxy_supplier>. | |
| const TAO_Notify_EventTypeSeq & | offered_types (void) const |
| What are the types being offered. | |
| const TAO_Notify_EventTypeSeq & | subscription_types (void) const |
| What are the types being subscribed. | |
Protected Member Functions | |
| void | subscribe (TAO_Notify_ProxySupplier *proxy_supplier, const TAO_Notify_EventTypeSeq &seq, TAO_Notify_EventTypeSeq &new_seq) |
| Subscribe <proxy_supplier> to the event type sequence list <seq>. | |
| void | un_subscribe (TAO_Notify_ProxySupplier *proxy_supplier, const TAO_Notify_EventTypeSeq &seq, TAO_Notify_EventTypeSeq &last_seq) |
| Unsubscribe <proxy_supplier> to the event type sequence list <seq>. | |
| void | publish (TAO_Notify_ProxyConsumer *proxy_consumer, const TAO_Notify_EventTypeSeq &seq, TAO_Notify_EventTypeSeq &new_seq) |
| Subscribe <proxy_consumer> to the event type sequence list <seq>. | |
| void | un_publish (TAO_Notify_ProxyConsumer *proxy_consumer, const TAO_Notify_EventTypeSeq &seq, TAO_Notify_EventTypeSeq &last_seq) |
| Subscribe <proxy_consumer> to the event type sequence list <seq>. | |
Private Member Functions | |
| TAO_Notify_Event_Manager (TAO_Notify_Event_Manager &) | |
| TAO_Notify_Event_Manager & | operator= (TAO_Notify_Event_Manager &) |
Private Attributes | |
| ACE_Auto_Ptr < TAO_Notify_Consumer_Map > | consumer_map_ |
| Consumer Map. | |
| ACE_Auto_Ptr < TAO_Notify_Supplier_Map > | supplier_map_ |
| Supplier Map. | |
A class that manages the Consumer and Supplier maps.
Definition at line 58 of file Event_Manager.h.
Reimplemented from TAO_Notify_Refcountable.
Definition at line 61 of file Event_Manager.h.
| TAO_Notify_Event_Manager::TAO_Notify_Event_Manager | ( | void | ) |
| TAO_Notify_Event_Manager::~TAO_Notify_Event_Manager | ( | ) | [virtual] |
Destructor.
Definition at line 68 of file Event_Manager.cpp.
{
if (TAO_debug_level > 0)
{
ACE_DEBUG ((LM_DEBUG, "destroying consumer/supplier map count = %d/%d,\n",
this->consumer_map().proxy_count (), this->supplier_map().proxy_count ()));
}
}
| TAO_Notify_Event_Manager::TAO_Notify_Event_Manager | ( | TAO_Notify_Event_Manager & | ) | [private] |
| void TAO_Notify_Event_Manager::connect | ( | TAO_Notify_ProxySupplier * | proxy_supplier | ) |
Connect ProxySupplier.
Definition at line 110 of file Event_Manager.cpp.
{
this->consumer_map().connect (proxy_supplier);
// Inform about offered types.
TAO_Notify_EventTypeSeq removed;
proxy_supplier->types_changed (this->offered_types (), removed);
}
| void TAO_Notify_Event_Manager::connect | ( | TAO_Notify_ProxyConsumer * | proxy_consumer | ) |
Connect ProxyConsumer.
Definition at line 126 of file Event_Manager.cpp.
{
this->supplier_map().connect (proxy_consumer);
// Inform about subscription types.
TAO_Notify_EventTypeSeq removed;
proxy_consumer->types_changed (this->subscription_types (), removed);
}
| TAO_Notify_Consumer_Map & TAO_Notify_Event_Manager::consumer_map | ( | void | ) |
Map accessors.
Definition at line 240 of file Event_Manager.cpp.
{
ACE_ASSERT( this->consumer_map_.get() != 0 );
return *this->consumer_map_;
}
| void TAO_Notify_Event_Manager::disconnect | ( | TAO_Notify_ProxySupplier * | proxy_supplier | ) |
Disconnect ProxySupplier.
Definition at line 120 of file Event_Manager.cpp.
{
this->consumer_map().disconnect (proxy_supplier);
}
| void TAO_Notify_Event_Manager::disconnect | ( | TAO_Notify_ProxyConsumer * | proxy_consumer | ) |
Disconnect ProxyConsumer.
Definition at line 135 of file Event_Manager.cpp.
{
this->supplier_map().disconnect (proxy_consumer);
}
| void TAO_Notify_Event_Manager::init | ( | void | ) |
Init.
Definition at line 83 of file Event_Manager.cpp.
{
ACE_ASSERT (this->consumer_map_.get() == 0);
TAO_Notify_Consumer_Map* consumer_map = 0;
ACE_NEW_THROW_EX (consumer_map,
TAO_Notify_Consumer_Map (),
CORBA::NO_MEMORY ());
this->consumer_map_.reset( consumer_map );
this->consumer_map().init ();
TAO_Notify_Supplier_Map* supplier_map = 0;
ACE_NEW_THROW_EX (supplier_map,
TAO_Notify_Supplier_Map (),
CORBA::NO_MEMORY ());
this->supplier_map_.reset( supplier_map );
this->supplier_map_->init ();
}
| void TAO_Notify_Event_Manager::offer_change | ( | TAO_Notify_ProxyConsumer * | proxy_consumer, | |
| const TAO_Notify_EventTypeSeq & | added, | |||
| const TAO_Notify_EventTypeSeq & | removed | |||
| ) |
Offer change received on <proxy_consumer>.
Definition at line 141 of file Event_Manager.cpp.
{
TAO_Notify_EventTypeSeq new_added, last_removed;
this->publish (proxy_consumer, added, new_added);
this->un_publish (proxy_consumer, removed, last_removed);
TAO_Notify_Consumer_Map::ENTRY::COLLECTION* updates_collection = this->consumer_map().updates_collection ();
TAO_Notify_ProxySupplier_Update_Worker worker (new_added, last_removed);
if (updates_collection != 0)
updates_collection->for_each (&worker);
}
| const TAO_Notify_EventTypeSeq & TAO_Notify_Event_Manager::offered_types | ( | void | ) | const |
What are the types being offered.
Definition at line 254 of file Event_Manager.cpp.
{
return this->supplier_map_->event_types ();
}
| TAO_Notify_Event_Manager& TAO_Notify_Event_Manager::operator= | ( | TAO_Notify_Event_Manager & | ) | [private] |
| void TAO_Notify_Event_Manager::publish | ( | TAO_Notify_ProxyConsumer * | proxy_consumer, | |
| const TAO_Notify_EventTypeSeq & | seq, | |||
| TAO_Notify_EventTypeSeq & | new_seq | |||
| ) | [protected] |
Subscribe <proxy_consumer> to the event type sequence list <seq>.
Definition at line 208 of file Event_Manager.cpp.
{
TAO_Notify_EventTypeSeq::CONST_ITERATOR iter (seq);
TAO_Notify_EventType* event_type = 0;
for (iter.first (); iter.next (event_type) != 0; iter.advance ())
{
int result = supplier_map().insert (proxy_consumer, *event_type);
if (result == 1)
new_seq.insert (*event_type);
}
}
| void TAO_Notify_Event_Manager::release | ( | ) | [virtual] |
The release method is called when the refcount reaches 0.
Implements TAO_Notify_Refcountable.
Definition at line 77 of file Event_Manager.cpp.
{
delete this;
}
| void TAO_Notify_Event_Manager::shutdown | ( | void | ) |
| void TAO_Notify_Event_Manager::subscribe | ( | TAO_Notify_ProxySupplier * | proxy_supplier, | |
| const TAO_Notify_EventTypeSeq & | seq, | |||
| TAO_Notify_EventTypeSeq & | new_seq | |||
| ) | [protected] |
Subscribe <proxy_supplier> to the event type sequence list <seq>.
Definition at line 176 of file Event_Manager.cpp.
{
TAO_Notify_EventTypeSeq::CONST_ITERATOR iter (seq);
TAO_Notify_EventType* event_type;
for (iter.first (); iter.next (event_type) != 0; iter.advance ())
{
int result = this->consumer_map().insert (proxy_supplier, *event_type);
if (result == 1)
new_seq.insert (*event_type);
}
}
| void TAO_Notify_Event_Manager::subscription_change | ( | TAO_Notify_ProxySupplier * | proxy_supplier, | |
| const TAO_Notify_EventTypeSeq & | added, | |||
| const TAO_Notify_EventTypeSeq & | removed | |||
| ) |
Subscription change received on <proxy_supplier>.
Definition at line 158 of file Event_Manager.cpp.
{
TAO_Notify_EventTypeSeq new_added, last_removed;
this->subscribe (proxy_supplier, added, new_added);
this->un_subscribe (proxy_supplier, removed, last_removed);
TAO_Notify_Supplier_Map::ENTRY::COLLECTION* updates_collection = this->supplier_map().updates_collection ();
TAO_Notify_ProxyConsumer_Update_Worker worker (new_added, last_removed);
if (updates_collection != 0)
{
updates_collection->for_each (&worker);
}
}
| const TAO_Notify_EventTypeSeq & TAO_Notify_Event_Manager::subscription_types | ( | void | ) | const |
What are the types being subscribed.
Definition at line 260 of file Event_Manager.cpp.
{
return this->consumer_map_->event_types ();
}
| TAO_Notify_Supplier_Map & TAO_Notify_Event_Manager::supplier_map | ( | void | ) |
Definition at line 247 of file Event_Manager.cpp.
{
ACE_ASSERT( this->supplier_map_.get() != 0 );
return *this->supplier_map_;
}
| void TAO_Notify_Event_Manager::un_publish | ( | TAO_Notify_ProxyConsumer * | proxy_consumer, | |
| const TAO_Notify_EventTypeSeq & | seq, | |||
| TAO_Notify_EventTypeSeq & | last_seq | |||
| ) | [protected] |
Subscribe <proxy_consumer> to the event type sequence list <seq>.
Definition at line 224 of file Event_Manager.cpp.
{
TAO_Notify_EventTypeSeq::CONST_ITERATOR iter (seq);
TAO_Notify_EventType* event_type = 0;
for (iter.first (); iter.next (event_type) != 0; iter.advance ())
{
int result = supplier_map().remove (proxy_consumer, *event_type);
if (result == 1)
last_seq.insert (*event_type);
}
}
| void TAO_Notify_Event_Manager::un_subscribe | ( | TAO_Notify_ProxySupplier * | proxy_supplier, | |
| const TAO_Notify_EventTypeSeq & | seq, | |||
| TAO_Notify_EventTypeSeq & | last_seq | |||
| ) | [protected] |
Unsubscribe <proxy_supplier> to the event type sequence list <seq>.
Definition at line 192 of file Event_Manager.cpp.
{
TAO_Notify_EventTypeSeq::CONST_ITERATOR iter (seq);
TAO_Notify_EventType* event_type = 0;
for (iter.first (); iter.next (event_type) != 0; iter.advance ())
{
int result = this->consumer_map().remove (proxy_supplier, *event_type);
if (result == 1)
last_seq.insert (*event_type);
}
}
Consumer Map.
Definition at line 126 of file Event_Manager.h.
Supplier Map.
Definition at line 129 of file Event_Manager.h.
1.7.0