#include <Proxy.h>
Inheritance diagram for TAO_Notify_Proxy:
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. | |
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 |
Definition at line 38 of file Proxy.h.
Reimplemented from TAO_Notify_Refcountable.
Reimplemented in TAO_Notify_ProxyConsumer, and TAO_Notify_ProxySupplier.
typedef CosNotifyChannelAdmin::ProxyIDSeq_var TAO_Notify_Proxy::SEQ_VAR |
TAO_BEGIN_VERSIONED_NAMESPACE_DECL TAO_Notify_Proxy::TAO_Notify_Proxy | ( | void | ) |
TAO_Notify_Proxy::~TAO_Notify_Proxy | ( | ) | [virtual] |
CORBA::Object_ptr TAO_Notify_Proxy::activate | ( | PortableServer::Servant | servant, | |
CORBA::Long | id | |||
) | [virtual] |
Activate with a given ID.
Reimplemented from TAO_Notify_Object.
Reimplemented in TAO_Notify_RT_StructuredProxyPushSupplier.
Definition at line 39 of file Proxy.cpp.
References TAO_Notify_Object::activate(), and TAO_Notify_Object::set_primary_as_proxy_poa().
00041 { 00042 // Set the POA that we use to return our <ref> 00043 this->set_primary_as_proxy_poa(); 00044 return TAO_Notify_Object::activate (servant, id); 00045 }
CORBA::Object_ptr TAO_Notify_Proxy::activate | ( | PortableServer::Servant | servant | ) | [virtual] |
Activate.
Reimplemented from TAO_Notify_Object.
Reimplemented in TAO_Notify_RT_StructuredProxyPushSupplier.
Definition at line 31 of file Proxy.cpp.
References TAO_Notify_Object::activate(), and TAO_Notify_Object::set_primary_as_proxy_poa().
Referenced by TAO_Notify_RT_StructuredProxyPushSupplier::activate().
00032 { 00033 // Set the POA that we use to return our <ref> 00034 this->set_primary_as_proxy_poa(); 00035 return TAO_Notify_Object::activate (servant); 00036 }
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 >.
Referenced by TAO_Notify_Subscription_Change_Worker::work().
ACE_INLINE 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.
References CosNotifyChannelAdmin::AND_OP, filter_admin_, and TAO_Notify_FilterAdmin::match().
Referenced by TAO_Notify_Method_Request_Lookup::execute_i().
00017 { 00018 // check if it passes the parent filter. 00019 CORBA::Boolean parent_val = 00020 parent_filter_admin.match (event); 00021 00022 CORBA::Boolean val = 0; 00023 00024 if (filter_operator == CosNotifyChannelAdmin::AND_OP) 00025 { 00026 val = parent_val && this->filter_admin_.match (event); 00027 } 00028 else 00029 { 00030 val = parent_val || this->filter_admin_.match (event); 00031 } 00032 00033 return val; 00034 }
void TAO_Notify_Proxy::deactivate | ( | void | ) |
Deactivate.
Reimplemented from TAO_Notify_Object.
Definition at line 48 of file Proxy.cpp.
References ACE_ASSERT, TAO_Notify_POA_Helper::deactivate(), and TAO_Notify_Object::proxy_poa().
00049 { 00050 ACE_ASSERT (this->proxy_poa() != 0 ); 00051 this->proxy_poa()->deactivate (this->id()); 00052 }
virtual void TAO_Notify_Proxy::destroy | ( | void | ) | [pure virtual] |
Destroy this object.
Implemented in TAO_Notify_ProxyConsumer, and TAO_Notify_ProxySupplier.
Referenced by TAO_Notify_Peer::handle_dispatch_exception().
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.
Referenced by save_persistent().
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.
References filter_admin_, ACE_Unbounded_Set_Ex< T, C >::reset(), and subscribed_types_.
00169 { 00170 ACE_UNUSED_ARG (id); 00171 ACE_UNUSED_ARG (attrs); 00172 TAO_Notify::Topology_Object* result = this; 00173 if (type == "subscriptions") 00174 { 00175 // since we initialized our subscribed types to everything 00176 // in the constructor. we have to clear it out first. 00177 this->subscribed_types_.reset(); 00178 result = &this->subscribed_types_; 00179 } 00180 else if (type == "filter_admin") 00181 { 00182 result = & this->filter_admin_; 00183 } 00184 return result; 00185 }
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.
References ACE_GUARD_THROW_EX, ACE_NEW_THROW_EX, CosNotifyChannelAdmin::ALL_NOW_UPDATES_OFF, CosNotifyChannelAdmin::ALL_NOW_UPDATES_ON, CosNotifyChannelAdmin::NONE_NOW_UPDATES_ON, TAO_Notify_EventTypeSeq::populate(), TAO_SYNCH_MUTEX, and updates_off_.
Referenced by TAO_Notify_ProxySupplier_T< SERVANT_TYPE >::obtain_offered_types(), and TAO_Notify_ProxyConsumer_T< SERVANT_TYPE >::obtain_subscription_types().
00086 { 00087 CosNotification::EventTypeSeq_var event_type_seq; 00088 00089 ACE_NEW_THROW_EX (event_type_seq, 00090 CosNotification::EventTypeSeq (), 00091 CORBA::NO_MEMORY ()); 00092 00093 ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, ace_mon, this->lock_, CORBA::INTERNAL ()); 00094 00095 if (mode == CosNotifyChannelAdmin::ALL_NOW_UPDATES_OFF || 00096 mode == CosNotifyChannelAdmin::ALL_NOW_UPDATES_ON) 00097 { 00098 types.populate (event_type_seq); 00099 } 00100 00101 if (mode == CosNotifyChannelAdmin::NONE_NOW_UPDATES_ON || 00102 mode == CosNotifyChannelAdmin::ALL_NOW_UPDATES_ON) 00103 { 00104 this->updates_off_ = 0; 00105 } 00106 else 00107 { 00108 this->updates_off_ = 1; 00109 } 00110 00111 return event_type_seq._retn (); 00112 }
virtual TAO_Notify_Peer* TAO_Notify_Proxy::peer | ( | void | ) | [pure virtual] |
Access our Peer.
Implemented in TAO_Notify_ProxyConsumer, and TAO_Notify_ProxySupplier.
Referenced by qos_changed(), and save_attrs().
void TAO_Notify_Proxy::qos_changed | ( | const TAO_Notify_QoSProperties & | qos_properties | ) | [virtual] |
Override, TAO_Notify_Object::qos_changed.
Reimplemented from TAO_Notify_Object.
Reimplemented in TAO_Notify_ProxySupplier.
Definition at line 115 of file Proxy.cpp.
References peer(), and TAO_Notify_Peer::qos_changed().
Referenced by TAO_Notify_ProxySupplier::qos_changed().
00116 { 00117 //Inform Peers of qos changes. 00118 TAO_Notify_Peer* peer = this->peer (); 00119 00120 if (peer != 0) 00121 peer->qos_changed (qos_properties); 00122 }
void TAO_Notify_Proxy::save_attrs | ( | TAO_Notify::NVPList & | attrs | ) | [virtual] |
Called by derived types to save their attributes. Each derived type should call its superclass version before saving its own attrs.
Reimplemented from TAO_Notify_Object.
Definition at line 156 of file Proxy.cpp.
References TAO_Notify_Peer::get_ior(), peer(), TAO_Notify::NVPList::push_back(), and TAO_Notify_Object::save_attrs().
Referenced by save_persistent().
00157 { 00158 TAO_Notify_Object::save_attrs(attrs); 00159 TAO_Notify_Peer * peer = this->peer(); 00160 if (peer != 0) 00161 { 00162 attrs.push_back (TAO_Notify::NVP("PeerIOR", peer->get_ior())); 00163 } 00164 }
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.
References TAO_Notify::Topology_Saver::begin_object(), TAO_Notify::Topology_Object::children_changed_, TAO_Notify::Topology_Saver::end_object(), get_proxy_type_name(), TAO_Notify::Topology_Object::is_persistent(), save_attrs(), and TAO_Notify::Topology_Object::self_changed_.
00126 { 00127 bool changed = this->children_changed_; 00128 this->children_changed_ = false; 00129 this->self_changed_ = false; 00130 00131 if (is_persistent ()) 00132 { 00133 TAO_Notify::NVPList attrs; 00134 this->save_attrs(attrs); 00135 00136 const char * type_name = this->get_proxy_type_name (); 00137 bool want_all_children = saver.begin_object(this->id(), type_name, attrs, changed); 00138 00139 if (want_all_children || this->filter_admin_.is_changed ()) 00140 { 00141 this->filter_admin_.save_persistent(saver); 00142 } 00143 00144 if (want_all_children || this->subscribed_types_.is_changed ()) 00145 { 00146 this->subscribed_types_.save_persistent(saver); 00147 } 00148 00149 // todo: handle removed children 00150 00151 saver.end_object(this->id(), type_name); 00152 } 00153 }
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.
References ACE_GUARD_THROW_EX, subscribed_types_, and TAO_SYNCH_MUTEX.
Referenced by TAO_Notify_Peer::dispatch_updates().
00056 { 00057 ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, ace_mon, this->lock_, 00058 CORBA::INTERNAL ()); 00059 00060 // copy 00061 subscribed_types = this->subscribed_types_; 00062 }
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.
References TAO_Notify_Method_Request_Updates_No_Copy::execute(), TAO_Notify_Object::execute_task(), TAO_Notify_Properties::instance(), and TAO_Notify_Properties::updates().
Referenced by TAO_Notify_Event_Manager::connect(), TAO_Notify_ProxySupplier_Update_Worker::work(), and TAO_Notify_ProxyConsumer_Update_Worker::work().
00066 { 00067 // return if the updates for this proxy are turned off or 00068 // if all the updates in the channel are switched off. 00069 if (this->updates_off_ == 1 || TAO_Notify_PROPERTIES::instance()->updates () == 0) 00070 return; 00071 00072 TAO_Notify_Method_Request_Updates_No_Copy request (added, removed, this); 00073 00074 if (TAO_Notify_PROPERTIES::instance()->asynch_updates () == 1) // if we should send the updates synchronously. 00075 { 00076 this->execute_task (request); 00077 } 00078 else // execute in the current thread context. 00079 { 00080 request.execute (); 00081 } 00082 }
TAO_BEGIN_VERSIONED_NAMESPACE_DECL ACE_INLINE CORBA::Boolean TAO_Notify_Proxy::updates_off | ( | void | ) |
Have updates been turned off.
Definition at line 8 of file Proxy.inl.
References updates_off_.
00009 { 00010 return this->updates_off_; 00011 }
friend class TAO_Notify_Peer [friend] |
Filter Administration.
Definition at line 112 of file Proxy.h.
Referenced by TAO_Notify_Proxy_T< SERVANT_TYPE >::add_filter(), check_filters(), TAO_Notify_Proxy_T< SERVANT_TYPE >::get_all_filters(), TAO_Notify_Proxy_T< SERVANT_TYPE >::get_filter(), load_child(), TAO_Notify_Proxy_T< SERVANT_TYPE >::remove_all_filters(), and TAO_Notify_Proxy_T< SERVANT_TYPE >::remove_filter().
The types that we're subscribed with the event manager.
Definition at line 115 of file Proxy.h.
Referenced by load_child(), TAO_Notify_ProxyConsumer_T< SERVANT_TYPE >::offer_change(), subscribed_types(), and TAO_Notify_ProxySupplier_T< SERVANT_TYPE >::subscription_change().
CORBA::Boolean TAO_Notify_Proxy::updates_off_ [protected] |
True if updates have been turned off.
Definition at line 118 of file Proxy.h.
Referenced by TAO_Notify_StructuredProxyPushConsumer::load_attrs(), TAO_Notify_SequenceProxyPushConsumer::load_attrs(), TAO_Notify_ProxyPushConsumer::load_attrs(), obtain_types(), and updates_off().