Base class for all the ProxySuppliers. More...
#include <ProxySupplier.h>


Public Types | |
| typedef TAO_Notify_Refcountable_Guard_T < TAO_Notify_ProxySupplier > | Ptr |
Public Member Functions | |
| TAO_Notify_ProxySupplier (void) | |
| Constructor. | |
| virtual | ~TAO_Notify_ProxySupplier () |
| Destructor. | |
| virtual void | init (TAO_Notify_ConsumerAdmin *consumer_admin) |
| Init. | |
| void | connect (TAO_Notify_Consumer *consumer) |
| Connect. | |
| void | disconnect (void) |
| Disconnect. | |
| virtual void | deliver (TAO_Notify_Method_Request_Dispatch_No_Copy &request) |
| Dispatch Event to consumer. | |
| virtual int | shutdown (void) |
| Override TAO_Notify_Container_T::shutdown method. | |
| virtual void | destroy (void) |
| Destroy this object. | |
| void | destroy (bool from_timeout) |
| virtual void | qos_changed (const TAO_Notify_QoSProperties &qos_properties) |
| Override, TAO_Notify_Proxy::qos_changed to apply MaxEventssPerConsumer QoS. | |
| bool | is_connected (void) const |
| Returns true if connected. | |
| TAO_Notify_Consumer * | consumer (void) |
| Access the Consumer. | |
| TAO_Notify_ConsumerAdmin & | consumer_admin (void) |
| The CA parent. | |
Private Member Functions | |
| virtual TAO_Notify_Peer * | peer (void) |
| Access our Peer. | |
Private Attributes | |
| TAO_Notify_ConsumerAdmin::Ptr | consumer_admin_ |
| TAO_Notify_Consumer::Ptr | consumer_ |
| The Consumer that we're connect to. | |
Friends | |
| class | TAO_Notify_Consumer |
Base class for all the ProxySuppliers.
Definition at line 38 of file ProxySupplier.h.
Reimplemented from TAO_Notify_Proxy.
Definition at line 43 of file ProxySupplier.h.
| TAO_Notify_ProxySupplier::TAO_Notify_ProxySupplier | ( | void | ) |
| TAO_Notify_ProxySupplier::~TAO_Notify_ProxySupplier | ( | ) | [virtual] |
| void TAO_Notify_ProxySupplier::connect | ( | TAO_Notify_Consumer * | consumer | ) |
Connect.
Definition at line 60 of file ProxySupplier.cpp.
{
// Adopt the consumer
TAO_Notify_Consumer::Ptr auto_consumer (consumer);
TAO_Notify_Atomic_Property_Long& consumer_count = this->admin_properties().consumers ();
const TAO_Notify_Property_Long& max_consumers = this->admin_properties().max_consumers ();
if (max_consumers != 0 && consumer_count >= max_consumers.value ())
{
throw CORBA::IMP_LIMIT (); // we've reached the limit of consumers connected.
}
{
ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, ace_mon, this->lock_,
CORBA::INTERNAL ());
// if consumer is set and reconnect not allowed we get out.
if (this->is_connected () && TAO_Notify_PROPERTIES::instance()->allow_reconnect() == false)
{
throw CosEventChannelAdmin::AlreadyConnected ();
}
// Adopt the consumer
if (this->consumer_.get() != 0)
auto_consumer->assume_pending_events (*this->consumer_.get ());
this->consumer_ = auto_consumer;
this->consumer_admin_->subscribed_types (this->subscribed_types_); // get the parents subscribed types.
}
// Inform QoS values.
ACE_ASSERT (this->consumer_.get() != 0);
this->consumer_->qos_changed (this->qos_properties_);
TAO_Notify_EventTypeSeq removed;
this->event_manager().subscription_change (this, this->subscribed_types_, removed);
this->event_manager().connect (this);
// Increment the global consumer count
++consumer_count;
}
| TAO_Notify_Consumer * TAO_Notify_ProxySupplier::consumer | ( | void | ) |
Access the Consumer.
Definition at line 14 of file ProxySupplier.inl.
| TAO_Notify_ConsumerAdmin & TAO_Notify_ProxySupplier::consumer_admin | ( | void | ) |
The CA parent.
Definition at line 20 of file ProxySupplier.inl.
{
ACE_ASSERT( this->consumer_admin_.get() != 0 );
return *this->consumer_admin_;
}
| void TAO_Notify_ProxySupplier::deliver | ( | TAO_Notify_Method_Request_Dispatch_No_Copy & | request | ) | [virtual] |
Dispatch Event to consumer.
Reimplemented in TAO_Notify_RT_StructuredProxyPushSupplier.
Definition at line 151 of file ProxySupplier.cpp.
{
this->execute_task (request);
}
| void TAO_Notify_ProxySupplier::destroy | ( | void | ) | [virtual] |
Destroy this object.
Implements TAO_Notify_Proxy.
Definition at line 135 of file ProxySupplier.cpp.
{
this->destroy (false);
}
| void TAO_Notify_ProxySupplier::destroy | ( | bool | from_timeout | ) |
Destroy this object, but also indicate if it is due to a timeout or not.
Definition at line 141 of file ProxySupplier.cpp.
{
this->shutdown ();
this->consumer_admin_->cleanup_proxy (this, true, from_timeout);
// Do not reset this->consumer_.
// It is not safe to delete the non-refcounted consumer here.
}
| void TAO_Notify_ProxySupplier::disconnect | ( | void | ) |
Disconnect.
Definition at line 106 of file ProxySupplier.cpp.
{
TAO_Notify_EventTypeSeq added;
this->event_manager().subscription_change (this, added, this->subscribed_types_);
this->event_manager().disconnect (this);
// Decrement the global consumer count
this->admin_properties().consumers ()--;
}
| void TAO_Notify_ProxySupplier::init | ( | TAO_Notify_ConsumerAdmin * | consumer_admin | ) | [virtual] |
Init.
Definition at line 32 of file ProxySupplier.cpp.
{
ACE_ASSERT (consumer_admin != 0 && this->consumer_admin_.get() == 0);
TAO_Notify_Proxy::initialize (consumer_admin);
this->consumer_admin_.reset (consumer_admin);
this->filter_admin_.event_channel (
this->consumer_admin_->event_channel());
const CosNotification::QoSProperties &default_ps_qos =
TAO_Notify_PROPERTIES::instance ()->default_proxy_supplier_qos_properties ();
{
ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, ace_mon, this->lock_,
CORBA::INTERNAL ());
this->TAO_Notify_Object::set_qos (default_ps_qos);
}
}
| bool TAO_Notify_ProxySupplier::is_connected | ( | void | ) | const |
Returns true if connected.
Definition at line 8 of file ProxySupplier.inl.
| TAO_Notify_Peer * TAO_Notify_ProxySupplier::peer | ( | void | ) | [private, virtual] |
Access our Peer.
Implements TAO_Notify_Proxy.
Definition at line 54 of file ProxySupplier.cpp.
{
return this->consumer ();
}
| void TAO_Notify_ProxySupplier::qos_changed | ( | const TAO_Notify_QoSProperties & | qos_properties | ) | [virtual] |
Override, TAO_Notify_Proxy::qos_changed to apply MaxEventssPerConsumer QoS.
Reimplemented from TAO_Notify_Proxy.
Definition at line 157 of file ProxySupplier.cpp.
{
TAO_Notify_Proxy::qos_changed (qos_properties);
}
| int TAO_Notify_ProxySupplier::shutdown | ( | void | ) | [virtual] |
Override TAO_Notify_Container_T::shutdown method.
Definition at line 119 of file ProxySupplier.cpp.
{
if (this->TAO_Notify_Object::shutdown () == 1)
return 1;
this->disconnect ();
if (this->consumer_.get() != 0)
{
this->consumer_->shutdown ();
}
return 0;
}
friend class TAO_Notify_Consumer [friend] |
Definition at line 40 of file ProxySupplier.h.
The Consumer that we're connect to.
Definition at line 89 of file ProxySupplier.h.
= Data Members. The CA parent.
Definition at line 86 of file ProxySupplier.h.
1.7.0