#include <Admin.h>
Inheritance diagram for TAO_Notify_Admin:
Public Types | |
typedef CosNotifyChannelAdmin::AdminIDSeq | SEQ |
typedef CosNotifyChannelAdmin::AdminIDSeq_var | SEQ_VAR |
Public Member Functions | |
TAO_Notify_Admin () | |
Constuctor. | |
virtual | ~TAO_Notify_Admin () |
Destructor. | |
void | init (TAO_Notify::Topology_Parent *parent) |
Init. | |
void | insert (TAO_Notify_Proxy *proxy) |
Insert the proxy in the . | |
void | remove (TAO_Notify_Proxy *proxy) |
Remove type from container_. | |
TAO_Notify_FilterAdmin & | filter_admin (void) |
Access Admin FilterAdmin. | |
void | filter_operator (CosNotifyChannelAdmin::InterFilterGroupOperator filter_operator) |
Set Filter operator. | |
CosNotifyChannelAdmin::InterFilterGroupOperator | filter_operator (void) |
Access Filter operator. | |
void | subscribed_types (TAO_Notify_EventTypeSeq &subscribed_types) |
Obtain the Admin's subscribed types. | |
TAO_Notify_EventChannel * | event_channel () const |
virtual int | shutdown (void) |
Shutdown. | |
virtual void | save_persistent (TAO_Notify::Topology_Saver &saver) |
virtual TAO_Notify::Topology_Object * | load_child (const ACE_CString &type, CORBA::Long id, const TAO_Notify::NVPList &attrs) |
virtual void | reconnect (void) |
void | set_default (bool is_default) |
bool | is_default () const |
virtual void | load_attrs (const TAO_Notify::NVPList &attrs) |
Protected Types | |
typedef TAO_Notify_Container_T< TAO_Notify_Proxy > | TAO_Notify_Proxy_Container |
Protected Member Functions | |
void | save_attrs (TAO_Notify::NVPList &attrs) |
virtual const char * | get_admin_type_name (void) const=0 |
TAO_Notify_Proxy_Container & | proxy_container () |
Protected Attributes | |
TAO_Notify_EventChannel::Ptr | ec_ |
= Data Members The EventChannel. | |
TAO_Notify_EventTypeSeq | subscribed_types_ |
The types that we've subscribed our proxy objects with the event manager. | |
TAO_Notify_FilterAdmin | filter_admin_ |
Filter Administration. | |
CosNotifyChannelAdmin::InterFilterGroupOperator | filter_operator_ |
Filter operator. | |
bool | is_default_ |
Private Attributes | |
ACE_Auto_Ptr< TAO_Notify_Proxy_Container > | proxy_container_ |
The Proxy Container. | |
Friends | |
class | TAO_Notify_Builder |
Definition at line 40 of file Admin.h.
|
|
|
|
|
Definition at line 93 of file Admin.h. Referenced by init(). |
|
Constuctor.
Definition at line 34 of file Admin.cpp. References ACE_Unbounded_Set< TAO_Notify_EventType >::insert(), and subscribed_types_.
00035 : ec_ (0) 00036 , filter_operator_ (CosNotifyChannelAdmin::OR_OP) 00037 , is_default_ (false) 00038 { 00039 // Initialize all Admin objects to initially be subscribed for all 00040 // events. This is a reasonable default and is required to allow 00041 // Cos Event consumers/suppliers to send/receive events, 00042 this->subscribed_types_.insert (TAO_Notify_EventType::special ()); 00043 } |
|
Destructor.
Definition at line 45 of file Admin.cpp.
00046 { 00047 } |
|
Definition at line 9 of file Admin.inl. References ec_.
00010 { 00011 return this->ec_.get(); 00012 } |
|
Access Admin FilterAdmin.
Definition at line 16 of file Admin.inl. References filter_admin_. Referenced by TAO_Notify_Method_Request_Lookup::execute_i(), and TAO_Notify_Method_Request_Dispatch::execute_i().
00017 { 00018 return this->filter_admin_; 00019 } |
|
Access Filter operator.
Definition at line 28 of file Admin.inl. References filter_operator_.
00029 { 00030 return this->filter_operator_; 00031 } |
|
Set Filter operator.
Definition at line 22 of file Admin.inl. References filter_operator_. Referenced by TAO_Notify_Builder::build_consumer_admin(), TAO_Notify_Builder::build_supplier_admin(), TAO_Notify_Method_Request_Lookup::execute_i(), and TAO_Notify_Method_Request_Dispatch::execute_i().
00023 { 00024 this->filter_operator_ = filter_operator; 00025 } |
|
Implemented in TAO_Notify_ConsumerAdmin, and TAO_Notify_SupplierAdmin. Referenced by save_persistent(). |
|
Init.
Definition at line 50 of file Admin.cpp. References ACE_ASSERT, ACE_NEW_THROW_EX, ec_, TAO_Notify_Container_T< TYPE >::init(), TAO_Notify::Topology_Object::initialize(), proxy_container(), proxy_container_, ACE_Auto_Basic_Ptr< X >::reset(), and TAO_Notify_Proxy_Container. Referenced by TAO_Notify_SupplierAdmin::init(), and TAO_Notify_ConsumerAdmin::init().
00051 { 00052 ACE_ASSERT (this->ec_.get() == 0); 00053 00054 this->ec_.reset (dynamic_cast<TAO_Notify_EventChannel *>(parent)); 00055 ACE_ASSERT (this->ec_.get() != 0); 00056 00057 // this-> on the following line confuses VC6 00058 initialize (parent); 00059 00060 TAO_Notify_Proxy_Container* proxy_container = 0; 00061 ACE_NEW_THROW_EX (proxy_container, 00062 TAO_Notify_Proxy_Container (), 00063 CORBA::INTERNAL ()); 00064 this->proxy_container_.reset (proxy_container); 00065 00066 this->proxy_container().init (); 00067 00068 } |
|
Insert the proxy in the .
Definition at line 103 of file Admin.cpp. References TAO_Notify_Container_T< TYPE >::insert(), and proxy_container().
00104 { 00105 this->proxy_container().insert (proxy); 00106 } |
|
Definition at line 42 of file Admin.inl. References is_default_. Referenced by TAO_Notify_EventChannel::load_child().
00043 { 00044 return this->is_default_; 00045 } |
|
Load our attributes. Each derived type should call the superclass load first before loading its own attributes. Reimplemented from TAO_Notify_Object. Definition at line 155 of file Admin.cpp. References ACE_OS::atoi(), filter_operator_, TAO_Notify::NVPList::find(), is_default_, TAO_Notify_Object::load_attrs(), and ACE_OS::strcmp(). Referenced by TAO_Notify_EventChannel::load_child().
00156 { 00157 TAO_Notify_Object::load_attrs (attrs); 00158 const char* value = 0; 00159 if (attrs.find ("InterFilterGroupOperator", value)) 00160 { 00161 this->filter_operator_ = static_cast <CosNotifyChannelAdmin::InterFilterGroupOperator> (ACE_OS::atoi (value)); 00162 } 00163 00164 if (attrs.find ("default", value)) 00165 { 00166 this->is_default_ = (ACE_OS::strcmp (value, "yes") == 0); 00167 } 00168 } |
|
Reimplemented in TAO_Notify_ConsumerAdmin, and TAO_Notify_SupplierAdmin. Definition at line 171 of file Admin.cpp. References ACE_DEBUG, ACE_TEXT(), DEBUG_LEVEL, filter_admin_, LM_DEBUG, ACE_Unbounded_Set< TAO_Notify_EventType >::reset(), and subscribed_types_. Referenced by TAO_Notify_SupplierAdmin::load_child(), and TAO_Notify_ConsumerAdmin::load_child().
00174 { 00175 ACE_UNUSED_ARG (attrs); 00176 TAO_Notify::Topology_Object* result = this; 00177 if (type == "subscriptions") 00178 { 00179 if (DEBUG_LEVEL) 00180 ACE_DEBUG ((LM_DEBUG, 00181 ACE_TEXT ("(%P|%t) Admin reload subscription %d\n"), 00182 static_cast<int> (id) 00183 )); 00184 // since we initialized our subscribed types to everything 00185 // in the constructor. we have to clear it out first. 00186 this->subscribed_types_.reset(); 00187 result = &this->subscribed_types_; 00188 } 00189 else if (type == "filter_admin") 00190 { 00191 if (DEBUG_LEVEL) 00192 ACE_DEBUG ((LM_DEBUG, 00193 ACE_TEXT ("(%P|%t) Admin reload filter_admin %d\n"), 00194 static_cast<int> (id) 00195 )); 00196 result = & this->filter_admin_; 00197 } 00198 return result; 00199 } |
|
Definition at line 48 of file Admin.inl. References ACE_ASSERT, ACE_Auto_Basic_Ptr< X >::get(), and proxy_container_. Referenced by TAO_Notify_SupplierAdmin::destroy(), TAO_Notify_ConsumerAdmin::destroy(), init(), insert(), TAO_Notify_SupplierAdmin::offer_change(), reconnect(), remove(), save_persistent(), shutdown(), and TAO_Notify_ConsumerAdmin::subscription_change().
00049 { 00050 ACE_ASSERT( proxy_container_.get() != 0 ); 00051 return *proxy_container_; 00052 } |
|
Re-establish connections that we had before a shutdown. After a topology restore, this method is called so we can reconnect to any external objects with whom we were interacting. We should call the reconnect() method on all of our children to give them the chance to do the same. Reimplemented from TAO_Notify::Topology_Savable. Definition at line 202 of file Admin.cpp. References TAO_Notify_Container_T< TYPE >::collection(), and proxy_container().
00203 { 00204 TAO_Notify::Reconnect_Worker<TAO_Notify_Proxy> wrk; 00205 this->proxy_container().collection()->for_each(&wrk); 00206 } |
|
Remove type from container_.
Definition at line 71 of file Admin.cpp. References proxy_container(), and TAO_Notify_Container_T< TYPE >::remove().
00072 { 00073 this->proxy_container().remove (proxy); 00074 } |
|
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 143 of file Admin.cpp. References is_default_, TAO_Notify::NVPList::push_back(), and TAO_Notify_Object::save_attrs(). Referenced by save_persistent().
00144 { 00145 TAO_Notify_Object::save_attrs(attrs); 00146 attrs.push_back(TAO_Notify::NVP("InterFilterGroupOperator", 00147 this->filter_operator_)); 00148 if (this->is_default_) 00149 { 00150 attrs.push_back (TAO_Notify::NVP ("default", "yes")); 00151 } 00152 } |
|
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 109 of file Admin.cpp. References TAO_Notify::Topology_Saver::begin_object(), TAO_Notify_Container_T< TYPE >::collection(), TAO_Notify::Topology_Saver::end_object(), filter_admin_, get_admin_type_name(), TAO_Notify::Topology_Object::is_changed(), TAO_Notify::Topology_Object::is_persistent(), proxy_container(), save_attrs(), TAO_Notify_EventTypeSeq::save_persistent(), TAO_Notify_FilterAdmin::save_persistent(), and subscribed_types_.
00110 { 00111 bool changed = this->children_changed_; 00112 this->children_changed_ = false; 00113 this->self_changed_ = false; 00114 00115 if (is_persistent ()) 00116 { 00117 TAO_Notify::NVPList attrs; 00118 this->save_attrs(attrs); 00119 00120 const char* type = this->get_admin_type_name(); 00121 00122 bool want_all_children = 00123 saver.begin_object(this->id(), type, attrs, changed); 00124 00125 if (want_all_children || this->filter_admin_.is_changed ()) 00126 { 00127 this->filter_admin_.save_persistent(saver); 00128 } 00129 if (want_all_children || this->subscribed_types_.is_changed ()) 00130 { 00131 this->subscribed_types_.save_persistent(saver); 00132 } 00133 00134 TAO_Notify::Save_Persist_Worker<TAO_Notify_Proxy> 00135 wrk(saver, want_all_children); 00136 this->proxy_container().collection()->for_each(&wrk); 00137 00138 saver.end_object(this->id(), type); 00139 } 00140 } |
|
Definition at line 35 of file Admin.inl. References is_default_. Referenced by TAO_Notify_EventChannel::default_consumer_admin(), and TAO_Notify_EventChannel::default_supplier_admin().
00036 { 00037 this->is_default_ = is_default; 00038 } |
|
Shutdown.
Reimplemented from TAO_Notify_Object. Definition at line 91 of file Admin.cpp. References proxy_container(), TAO_Notify_Container_T< TYPE >::shutdown(), and TAO_Notify_Object::shutdown(). Referenced by TAO_Notify_SupplierAdmin::destroy(), and TAO_Notify_ConsumerAdmin::destroy().
00092 { 00093 int sd_ret = TAO_Notify_Object::shutdown (); 00094 if (sd_ret == 1) 00095 return 1; 00096 00097 this->proxy_container().shutdown (); 00098 00099 return 0; 00100 } |
|
Obtain the Admin's subscribed types.
Definition at line 77 of file Admin.cpp. References ACE_GUARD_THROW_EX, TAO_Notify_EventTypeSeq::add_and_remove(), and TAO_SYNCH_MUTEX.
00078 { 00079 ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, ace_mon, this->lock_, 00080 CORBA::INTERNAL ()); 00081 00082 // Adopt the Admin's subscription. 00083 TAO_Notify_EventTypeSeq added (this->subscribed_types_), removed; 00084 00085 added.add_and_remove (subscribed_types, removed); 00086 00087 subscribed_types = added; 00088 } |
|
Reimplemented from TAO_Notify_Object. |
|
= Data Members The EventChannel.
Definition at line 99 of file Admin.h. Referenced by event_channel(), and init(). |
|
Filter Administration.
Definition at line 106 of file Admin.h. Referenced by filter_admin(), load_child(), and save_persistent(). |
|
Filter operator.
Definition at line 109 of file Admin.h. Referenced by filter_operator(), and load_attrs(). |
|
Definition at line 111 of file Admin.h. Referenced by is_default(), load_attrs(), save_attrs(), and set_default(). |
|
The Proxy Container.
Definition at line 114 of file Admin.h. Referenced by init(), and proxy_container(). |
|
The types that we've subscribed our proxy objects with the event manager.
Definition at line 103 of file Admin.h. Referenced by load_child(), save_persistent(), and TAO_Notify_Admin(). |