diff options
Diffstat (limited to 'TAO/orbsvcs/examples/CosEC/RtEC_Based/tests/Basic/Supplier.cpp')
-rw-r--r-- | TAO/orbsvcs/examples/CosEC/RtEC_Based/tests/Basic/Supplier.cpp | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/TAO/orbsvcs/examples/CosEC/RtEC_Based/tests/Basic/Supplier.cpp b/TAO/orbsvcs/examples/CosEC/RtEC_Based/tests/Basic/Supplier.cpp new file mode 100644 index 00000000000..4495a9bdd82 --- /dev/null +++ b/TAO/orbsvcs/examples/CosEC/RtEC_Based/tests/Basic/Supplier.cpp @@ -0,0 +1,68 @@ +/* -*- C++ -*- */ +// $Id$ + +#include "Supplier.h" + +void +Supplier::open (CosEventChannelAdmin::EventChannel_ptr event_channel) +{ + // = Connect as a consumer. + this->supplier_admin_ = + event_channel->for_suppliers (); +} + +void +Supplier::close (void) +{ + this->disconnect (); + + this->supplier_admin_ = + CosEventChannelAdmin::SupplierAdmin::_nil (); +} + +void +Supplier::connect (void) +{ + if (CORBA::is_nil (this->supplier_admin_.in ())) + return; + + this->consumer_proxy_ = + this->supplier_admin_->obtain_push_consumer (); + + CosEventComm::PushSupplier_var objref = this->_this (); + + this->consumer_proxy_->connect_push_supplier (objref.in ()); +} + +void +Supplier::disconnect (void) +{ + if (CORBA::is_nil (this->consumer_proxy_.in ()) + || CORBA::is_nil (this->supplier_admin_.in ())) + return; + + this->consumer_proxy_->disconnect_push_consumer (); + + this->consumer_proxy_ = + CosEventChannelAdmin::ProxyPushConsumer::_nil (); +} + +void +Supplier::send_event (const CORBA::Any & data) +{ + this->consumer_proxy_->push (data); +} + +void +Supplier::disconnect_push_supplier (void) +{ + // Deactivate this object. + + PortableServer::POA_var poa = + this->_default_POA (); + + PortableServer::ObjectId_var id = + poa->servant_to_id (this); + + poa->deactivate_object (id.in ()); +} |