diff options
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Notify/Sequence')
8 files changed, 56 insertions, 2 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequenceProxyPushConsumer.cpp b/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequenceProxyPushConsumer.cpp index 1aa065a1b62..23a129e0553 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequenceProxyPushConsumer.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequenceProxyPushConsumer.cpp @@ -85,6 +85,23 @@ TAO_Notify_SequenceProxyPushConsumer::get_proxy_type_name (void) const } void +TAO_Notify_SequenceProxyPushConsumer::validate () +{ + TAO_Notify_Supplier* sup = this->supplier (); + if (sup != 0 && ! sup->is_alive (true)) + { + if (TAO_debug_level > 0) + { + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("(%P|%t) TAO_Notify_SequenceProxyPushConsumer::validate(%d)") + ACE_TEXT ("disconnecting \n"), this->id ())); + } + + this->disconnect_sequence_push_consumer (); + } +} + +void TAO_Notify_SequenceProxyPushConsumer::load_attrs (const TAO_Notify::NVPList& attrs) { SuperClass::load_attrs(attrs); diff --git a/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequenceProxyPushConsumer.h b/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequenceProxyPushConsumer.h index 937e4ce703f..a20b5fa7c35 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequenceProxyPushConsumer.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequenceProxyPushConsumer.h @@ -52,6 +52,7 @@ public: virtual const char * get_proxy_type_name (void) const; virtual void load_attrs (const TAO_Notify::NVPList& attrs); + virtual void validate (); protected: ///= Data Members diff --git a/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequenceProxyPushSupplier.cpp b/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequenceProxyPushSupplier.cpp index 95d19c94875..fb2ee51346f 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequenceProxyPushSupplier.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequenceProxyPushSupplier.cpp @@ -62,6 +62,24 @@ TAO_Notify_SequenceProxyPushSupplier::get_proxy_type_name (void) const } void +TAO_Notify_SequenceProxyPushSupplier::validate () +{ + TAO_Notify_Consumer* con = this->consumer (); + if (con != 0 && ! con->is_alive (true)) + { + if (TAO_debug_level > 0) + { + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("(%P|%t) TAO_Notify_SequenceProxyPushSupplier::validate(%d)") + ACE_TEXT ("disconnecting \n"), this->id ())); + } + + this->disconnect_sequence_push_supplier (); + } +} + + +void TAO_Notify_SequenceProxyPushSupplier::load_attrs (const TAO_Notify::NVPList& attrs) { SuperClass::load_attrs(attrs); diff --git a/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequenceProxyPushSupplier.h b/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequenceProxyPushSupplier.h index df868fb85f2..241e6f4eb9b 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequenceProxyPushSupplier.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequenceProxyPushSupplier.h @@ -60,6 +60,7 @@ public: virtual const char * get_proxy_type_name (void) const; virtual void load_attrs (const TAO_Notify::NVPList& attrs); + virtual void validate (); /// = Servant methods virtual CosNotifyChannelAdmin::ProxyType MyType (void); diff --git a/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequencePushConsumer.cpp b/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequencePushConsumer.cpp index a63e5274eae..f0e73cac8dc 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequencePushConsumer.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequencePushConsumer.cpp @@ -306,7 +306,7 @@ TAO_Notify_SequencePushConsumer::push (const CosNotification::EventBatch& event_ this->push_consumer_->_stubobj()->orb_core()->orbid())); } //--cj end - + last_ping_ = ACE_OS::gettimeofday (); this->push_consumer_->push_structured_events (event_batch); } @@ -336,4 +336,10 @@ TAO_Notify_SequencePushConsumer::reconnect_from_consumer (TAO_Notify_Consumer* o this->schedule_timer(false); } +CORBA::Object_ptr +TAO_Notify_SequencePushConsumer::get_consumer (void) +{ + return CosNotifyComm::SequencePushConsumer::_duplicate (this->push_consumer_.in ()); +} + TAO_END_VERSIONED_NAMESPACE_DECL diff --git a/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequencePushConsumer.h b/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequencePushConsumer.h index 362cd39b425..3279e6ee66c 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequencePushConsumer.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequencePushConsumer.h @@ -78,6 +78,8 @@ public: protected: + virtual CORBA::Object_ptr get_consumer (void); + /// The Consumer CosNotifyComm::SequencePushConsumer_var push_consumer_; diff --git a/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequencePushSupplier.cpp b/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequencePushSupplier.cpp index b4101eb48cf..be8c3139944 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequencePushSupplier.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequencePushSupplier.cpp @@ -50,4 +50,10 @@ TAO_Notify_SequencePushSupplier::get_ior (void) const return result; } +CORBA::Object_ptr +TAO_Notify_SequencePushSupplier::get_supplier (void) +{ + return CosNotifyComm::SequencePushSupplier::_duplicate (this->push_supplier_.in ()); +} + TAO_END_VERSIONED_NAMESPACE_DECL diff --git a/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequencePushSupplier.h b/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequencePushSupplier.h index a944971ffbc..20fc8ea9aac 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequencePushSupplier.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequencePushSupplier.h @@ -51,7 +51,10 @@ public: virtual ACE_CString get_ior (void) const; protected: - /// The Supplier + + virtual CORBA::Object_ptr get_supplier (void); + + /// The Supplier CosNotifyComm::SequencePushSupplier_var push_supplier_; }; |