Base class proxy for all proxys in NS. More...
#include <Proxy.h>
Public Types | |
typedef TAO_Notify_Refcountable_Guard_T < TAO_Notify_Proxy > | Ptr |
typedef CosNotifyChannelAdmin::ProxyIDSeq | SEQ |
typedef CosNotifyChannelAdmin::ProxyIDSeq_var | SEQ_VAR |
Public Member Functions | |
TAO_Notify_Proxy (void) | |
Constructor. | |
virtual | ~TAO_Notify_Proxy () |
Destructor. | |
virtual CORBA::Object_ptr | activate (PortableServer::Servant servant) |
Activate. | |
virtual CORBA::Object_ptr | activate (PortableServer::Servant servant, CORBA::Long id) |
Activate with a given ID. | |
void | deactivate (void) |
Deactivate. | |
void | subscribed_types (TAO_Notify_EventTypeSeq &subscribed_types) |
Obtain the Proxy's subscribed types. | |
CORBA::Boolean | check_filters (const TAO_Notify_Event *event, TAO_Notify_FilterAdmin &parent_filter_admin, CosNotifyChannelAdmin::InterFilterGroupOperator filter_operator) |
Check if this event passes the admin and proxy filters. | |
void | types_changed (const TAO_Notify_EventTypeSeq &added, const TAO_Notify_EventTypeSeq &removed) |
Inform this proxy that the following types are being advertised. | |
CORBA::Boolean | updates_off (void) |
Have updates been turned off. | |
virtual void | destroy (void)=0 |
Destroy this object. | |
virtual TAO_Notify_Peer * | peer (void)=0 |
Access our Peer. | |
virtual CosNotification::EventTypeSeq * | obtain_types (CosNotifyChannelAdmin::ObtainInfoMode mode, const TAO_Notify_EventTypeSeq &types) |
Implement the Obtain Types. | |
virtual void | admin_types_changed (const CosNotification::EventTypeSeq &added, const CosNotification::EventTypeSeq &removed)=0 |
Notification of subscriptions/offers set at the admin. | |
virtual void | qos_changed (const TAO_Notify_QoSProperties &qos_properties) |
Override, TAO_Notify_Object::qos_changed. | |
virtual void | save_persistent (TAO_Notify::Topology_Saver &saver) |
virtual void | save_attrs (TAO_Notify::NVPList &attrs) |
virtual const char * | get_proxy_type_name (void) const =0 |
virtual TAO_Notify::Topology_Object * | load_child (const ACE_CString &type, CORBA::Long id, const TAO_Notify::NVPList &attrs) |
Create a child of the appropriate type and return it. | |
virtual void | validate ()=0 |
Protected Attributes | |
TAO_Notify_FilterAdmin | filter_admin_ |
Filter Administration. | |
TAO_Notify_EventTypeSeq | subscribed_types_ |
The types that we're subscribed with the event manager. | |
CORBA::Boolean | updates_off_ |
True if updates have been turned off. | |
Friends | |
class | TAO_Notify_Peer |
Base class proxy for all proxys in NS.
Definition at line 38 of file Proxy.h.
Reimplemented in TAO_Notify_ProxyConsumer, and TAO_Notify_ProxySupplier.
typedef CosNotifyChannelAdmin::ProxyIDSeq_var TAO_Notify_Proxy::SEQ_VAR |
TAO_Notify_Proxy::TAO_Notify_Proxy | ( | void | ) |
TAO_Notify_Proxy::~TAO_Notify_Proxy | ( | ) | [virtual] |
CORBA::Object_ptr TAO_Notify_Proxy::activate | ( | PortableServer::Servant | servant | ) | [virtual] |
Activate.
Reimplemented in TAO_Notify_RT_StructuredProxyPushSupplier.
Definition at line 31 of file Proxy.cpp.
{ // Set the POA that we use to return our <ref> this->set_primary_as_proxy_poa(); return TAO_Notify_Object::activate (servant); }
CORBA::Object_ptr TAO_Notify_Proxy::activate | ( | PortableServer::Servant | servant, | |
CORBA::Long | id | |||
) | [virtual] |
Activate with a given ID.
Reimplemented in TAO_Notify_RT_StructuredProxyPushSupplier.
Definition at line 39 of file Proxy.cpp.
{ // Set the POA that we use to return our <ref> this->set_primary_as_proxy_poa(); return TAO_Notify_Object::activate (servant, id); }
virtual void TAO_Notify_Proxy::admin_types_changed | ( | const CosNotification::EventTypeSeq & | added, | |
const CosNotification::EventTypeSeq & | removed | |||
) | [pure virtual] |
Notification of subscriptions/offers set at the admin.
Implemented in TAO_Notify_ProxyConsumer_T< SERVANT_TYPE >, TAO_Notify_ProxySupplier_T< SERVANT_TYPE >, TAO_Notify_ProxyConsumer_T< POA_CosNotifyChannelAdmin::ProxyPushConsumer >, TAO_Notify_ProxyConsumer_T< POA_CosNotifyChannelAdmin::SequenceProxyPushConsumer >, TAO_Notify_ProxyConsumer_T< POA_CosEventChannelAdmin::ProxyPushConsumer >, TAO_Notify_ProxyConsumer_T< POA_CosNotifyChannelAdmin::StructuredProxyPushConsumer >, TAO_Notify_ProxySupplier_T< POA_Event_Forwarder::ProxyPushSupplier >, TAO_Notify_ProxySupplier_T< POA_CosNotifyChannelAdmin::SequenceProxyPushSupplier >, TAO_Notify_ProxySupplier_T< POA_Event_Forwarder::StructuredProxyPushSupplier >, and TAO_Notify_ProxySupplier_T< POA_CosEventChannelAdmin::ProxyPushSupplier >.
CORBA::Boolean TAO_Notify_Proxy::check_filters | ( | const TAO_Notify_Event * | event, | |
TAO_Notify_FilterAdmin & | parent_filter_admin, | |||
CosNotifyChannelAdmin::InterFilterGroupOperator | filter_operator | |||
) |
Check if this event passes the admin and proxy filters.
Definition at line 14 of file Proxy.inl.
{ // check if it passes the parent filter. CORBA::Boolean const parent_val = parent_filter_admin.match (event); CORBA::Boolean val = false; if (filter_operator == CosNotifyChannelAdmin::AND_OP) { val = parent_val && this->filter_admin_.match (event); } else { val = parent_val || this->filter_admin_.match (event); } return val; }
void TAO_Notify_Proxy::deactivate | ( | void | ) |
Deactivate.
Definition at line 48 of file Proxy.cpp.
{ ACE_ASSERT (this->proxy_poa() != 0 ); this->proxy_poa()->deactivate (this->id()); }
virtual void TAO_Notify_Proxy::destroy | ( | void | ) | [pure virtual] |
Destroy this object.
Implemented in TAO_Notify_ProxyConsumer, and TAO_Notify_ProxySupplier.
virtual const char* TAO_Notify_Proxy::get_proxy_type_name | ( | void | ) | const [pure virtual] |
Implemented in TAO_Notify_CosEC_ProxyPushConsumer, TAO_Notify_CosEC_ProxyPushSupplier, TAO_Notify_ProxyPushConsumer, TAO_Notify_ProxyPushSupplier, TAO_Notify_SequenceProxyPushConsumer, TAO_Notify_SequenceProxyPushSupplier, TAO_Notify_StructuredProxyPushConsumer, and TAO_Notify_StructuredProxyPushSupplier.
TAO_Notify::Topology_Object * TAO_Notify_Proxy::load_child | ( | const ACE_CString & | type, | |
CORBA::Long | id, | |||
const TAO_Notify::NVPList & | attrs | |||
) | [virtual] |
Create a child of the appropriate type and return it.
Use "type" as passed in to determine what kind of child (supporting the Topology_Object interface) to create and return. Inform it of its new ID.
Reimplemented from TAO_Notify::Topology_Object.
Definition at line 167 of file Proxy.cpp.
{ ACE_UNUSED_ARG (id); ACE_UNUSED_ARG (attrs); TAO_Notify::Topology_Object* result = this; if (type == "subscriptions") { // since we initialized our subscribed types to everything // in the constructor. we have to clear it out first. this->subscribed_types_.reset(); result = &this->subscribed_types_; } else if (type == "filter_admin") { result = & this->filter_admin_; } return result; }
CosNotification::EventTypeSeq * TAO_Notify_Proxy::obtain_types | ( | CosNotifyChannelAdmin::ObtainInfoMode | mode, | |
const TAO_Notify_EventTypeSeq & | types | |||
) | [virtual] |
Implement the Obtain Types.
Definition at line 85 of file Proxy.cpp.
{ CosNotification::EventTypeSeq_var event_type_seq; ACE_NEW_THROW_EX (event_type_seq, CosNotification::EventTypeSeq (), CORBA::NO_MEMORY ()); ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, ace_mon, this->lock_, CORBA::INTERNAL ()); if (mode == CosNotifyChannelAdmin::ALL_NOW_UPDATES_OFF || mode == CosNotifyChannelAdmin::ALL_NOW_UPDATES_ON) { types.populate (event_type_seq); } if (mode == CosNotifyChannelAdmin::NONE_NOW_UPDATES_ON || mode == CosNotifyChannelAdmin::ALL_NOW_UPDATES_ON) { this->updates_off_ = 0; } else { this->updates_off_ = 1; } return event_type_seq._retn (); }
virtual TAO_Notify_Peer* TAO_Notify_Proxy::peer | ( | void | ) | [pure virtual] |
Access our Peer.
Implemented in TAO_Notify_ProxyConsumer, and TAO_Notify_ProxySupplier.
void TAO_Notify_Proxy::qos_changed | ( | const TAO_Notify_QoSProperties & | qos_properties | ) | [virtual] |
Override, TAO_Notify_Object::qos_changed.
Reimplemented in TAO_Notify_ProxySupplier.
Definition at line 115 of file Proxy.cpp.
{ //Inform Peers of qos changes. TAO_Notify_Peer* peer = this->peer (); if (peer != 0) peer->qos_changed (qos_properties); }
void TAO_Notify_Proxy::save_attrs | ( | TAO_Notify::NVPList & | attrs | ) | [virtual] |
Definition at line 156 of file Proxy.cpp.
{ TAO_Notify_Object::save_attrs(attrs); TAO_Notify_Peer * peer = this->peer(); if (peer != 0) { attrs.push_back (TAO_Notify::NVP("PeerIOR", peer->get_ior())); } }
void TAO_Notify_Proxy::save_persistent | ( | TAO_Notify::Topology_Saver & | saver | ) | [virtual] |
Save our state to a Topology_Saver.
Use the methods of a Topology_Saver to store all information we want persisted. This function is called by our parent, which gives us a saver to use. In turn, we must call this function on all of our children. The implementation should look like: bool change = this->self_changed_; this->self_changed_ = false; this->children_changed_ = false; if (is_persistent ()) { bool want_all_children = saver.begin_object( this->id(), type, attrs, change); for all children { if (want_all_children || child.is_changed()) { child.save_persistent(saver); } } for all deleted children { saver.delete_child(child_type, child_id); } saver.end_object(this->id(), type); )
Implements TAO_Notify::Topology_Savable.
Definition at line 125 of file Proxy.cpp.
{ bool changed = this->children_changed_; this->children_changed_ = false; this->self_changed_ = false; if (is_persistent ()) { TAO_Notify::NVPList attrs; this->save_attrs(attrs); const char * type_name = this->get_proxy_type_name (); bool want_all_children = saver.begin_object(this->id(), type_name, attrs, changed); if (want_all_children || this->filter_admin_.is_changed ()) { this->filter_admin_.save_persistent(saver); } if (want_all_children || this->subscribed_types_.is_changed ()) { this->subscribed_types_.save_persistent(saver); } // todo: handle removed children saver.end_object(this->id(), type_name); } }
void TAO_Notify_Proxy::subscribed_types | ( | TAO_Notify_EventTypeSeq & | subscribed_types | ) |
Obtain the Proxy's subscribed types.
Definition at line 55 of file Proxy.cpp.
{ ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, ace_mon, this->lock_, CORBA::INTERNAL ()); // copy subscribed_types = this->subscribed_types_; }
void TAO_Notify_Proxy::types_changed | ( | const TAO_Notify_EventTypeSeq & | added, | |
const TAO_Notify_EventTypeSeq & | removed | |||
) |
Inform this proxy that the following types are being advertised.
Definition at line 65 of file Proxy.cpp.
{ // return if the updates for this proxy are turned off or // if all the updates in the channel are switched off. if (this->updates_off_ == 1 || TAO_Notify_PROPERTIES::instance()->updates () == 0) return; TAO_Notify_Method_Request_Updates_No_Copy request (added, removed, this); if (TAO_Notify_PROPERTIES::instance()->asynch_updates () == 1) // if we should send the updates synchronously. { this->execute_task (request); } else // execute in the current thread context. { request.execute (); } }
CORBA::Boolean TAO_Notify_Proxy::updates_off | ( | void | ) |
Have updates been turned off.
Definition at line 8 of file Proxy.inl.
{ return this->updates_off_; }
virtual void TAO_Notify_Proxy::validate | ( | ) | [pure virtual] |
Implemented in TAO_Notify_CosEC_ProxyPushConsumer, TAO_Notify_CosEC_ProxyPushSupplier, TAO_Notify_ProxyPushConsumer, TAO_Notify_ProxyPushSupplier, TAO_Notify_SequenceProxyPushConsumer, TAO_Notify_SequenceProxyPushSupplier, TAO_Notify_StructuredProxyPushConsumer, and TAO_Notify_StructuredProxyPushSupplier.
friend class TAO_Notify_Peer [friend] |
CORBA::Boolean TAO_Notify_Proxy::updates_off_ [protected] |