Base Wrappers for Suppliers that connect to the EventChannel. More...
#include <Supplier.h>
Public Member Functions | |
TAO_Notify_Supplier (TAO_Notify_ProxyConsumer *proxy) | |
Constructor. | |
virtual | ~TAO_Notify_Supplier () |
Destructor. | |
TAO_Notify_ProxyConsumer * | proxy_consumer (void) |
Access Specific Proxy. | |
virtual TAO_Notify_Proxy * | proxy (void) |
Access Base Proxy. | |
virtual CORBA::Object_ptr | get_supplier (void)=0 |
bool | is_alive (bool allow_nil_supplier) |
Protected Member Functions | |
virtual void | dispatch_updates_i (const CosNotification::EventTypeSeq &added, const CosNotification::EventTypeSeq &removed) |
Dispatch updates implementation. | |
Protected Attributes | |
TAO_Notify_ProxyConsumer * | proxy_ |
The proxy that we associate with. | |
CosNotifyComm::NotifySubscribe_var | subscribe_ |
Interface that accepts subscription_changes. | |
CORBA::Object_var | rtt_obj_ |
Base Wrappers for Suppliers that connect to the EventChannel.
Definition at line 35 of file Supplier.h.
TAO_Notify_Supplier::TAO_Notify_Supplier | ( | TAO_Notify_ProxyConsumer * | proxy | ) |
TAO_Notify_Supplier::~TAO_Notify_Supplier | ( | ) | [virtual] |
void TAO_Notify_Supplier::dispatch_updates_i | ( | const CosNotification::EventTypeSeq & | added, | |
const CosNotification::EventTypeSeq & | removed | |||
) | [protected, virtual] |
Dispatch updates implementation.
Implements TAO_Notify_Peer.
Definition at line 41 of file Supplier.cpp.
{ if (!CORBA::is_nil (this->subscribe_.in ())) this->subscribe_->subscription_change (added, removed); }
virtual CORBA::Object_ptr TAO_Notify_Supplier::get_supplier | ( | void | ) | [pure virtual] |
Implemented in TAO_Notify_PushSupplier, TAO_Notify_SequencePushSupplier, and TAO_Notify_StructuredPushSupplier.
bool TAO_Notify_Supplier::is_alive | ( | bool | allow_nil_supplier | ) |
Definition at line 52 of file Supplier.cpp.
{ bool status = false; CORBA::Object_var supplier = this->get_supplier (); if (CORBA::is_nil (supplier.in ())) { // The supplier may not connected or the supplier did // not provide a callback. In this case, the liveliness // check should return true so it will be validated in // next period. if (allow_nil_supplier) return true; else return status; } CORBA::PolicyList policy_list; try { bool do_liveliness_check = false; ACE_Time_Value now = ACE_OS::gettimeofday (); ACE_Time_Value last_ping = proxy_->last_ping(); if (CORBA::is_nil (this->rtt_obj_.in ())) { // We need to determine if the supplier on the other end is still // alive. Since we may be in an upcall from the owner of the // original supplier, we have to put a timeout on the call in case // the client side is not processing ORB requests at this time. In // the event that the timeout exception occurs, we will assume that // the original supplier is still around. If we get any other // exception we will say that the original supplier is not // available anymore. TimeBase::TimeT timeout = 10000000; CORBA::Any timeout_any; timeout_any <<= timeout; policy_list.length (1); policy_list[0] = TAO_Notify_PROPERTIES::instance()->orb()-> create_policy ( Messaging::RELATIVE_RT_TIMEOUT_POLICY_TYPE, timeout_any); rtt_obj_ = supplier->_set_policy_overrides (policy_list, CORBA::ADD_OVERRIDE); // Clean up the policy that was allocated in the try/catch for (CORBA::ULong i = 0; i < policy_list.length (); i++) policy_list[i]->destroy (); do_liveliness_check = (last_ping == ACE_Time_Value::zero ? true : now - last_ping >= TAO_Notify_PROPERTIES::instance()->validate_client_delay ()); } else do_liveliness_check = now - last_ping >= TAO_Notify_PROPERTIES::instance()->validate_client_interval (); if (CORBA::is_nil (rtt_obj_.in ())) status = false; else if (do_liveliness_check || allow_nil_supplier) { this->proxy_->last_ping (now); status = !rtt_obj_->_non_existent (); } else status = true; } catch (CORBA::TIMEOUT&) { status = true; } catch (CORBA::Exception& ex) { if (DEBUG_LEVEL > 0) { ex._tao_print_exception ("TAO_Notify_Supplier::is_alive: false"); } } return status; }
TAO_Notify_Proxy * TAO_Notify_Supplier::proxy | ( | void | ) | [virtual] |
Access Base Proxy.
Implements TAO_Notify_Peer.
Definition at line 35 of file Supplier.cpp.
{ return this->proxy_consumer (); }
TAO_Notify_ProxyConsumer * TAO_Notify_Supplier::proxy_consumer | ( | void | ) |
TAO_Notify_ProxyConsumer* TAO_Notify_Supplier::proxy_ [protected] |
The proxy that we associate with.
Definition at line 61 of file Supplier.h.
CORBA::Object_var TAO_Notify_Supplier::rtt_obj_ [protected] |
Definition at line 66 of file Supplier.h.
CosNotifyComm::NotifySubscribe_var TAO_Notify_Supplier::subscribe_ [protected] |
Interface that accepts subscription_changes.
Definition at line 64 of file Supplier.h.