void TAO_EC_ProxyPushSupplier::shutdown (void) { // Save the consumer we where connected to, we need to send a // disconnect message to it. RtecEventComm::PushConsumer_var consumer; { ACE_GUARD_THROW_EX ( ACE_Lock, ace_mon, *this->lock_, RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR ()); bool const connected = this->is_connected_i (); consumer = this->consumer_._retn (); if (connected) this->cleanup_i (); } this->deactivate (); if (CORBA::is_nil (consumer.in ())) return; try { consumer->disconnect_push_consumer (); } catch (const CORBA::Exception&) { // Ignore exceptions, we must isolate other clients from // problems on this one. } }
void TAO_EC_Default_ProxyPushSupplier::disconnect_push_supplier () { RtecEventComm::PushConsumer_var consumer; int connected = 0; { ACE_GUARD_THROW_EX ( ACE_Lock, ace_mon, *this->lock_, CORBA::INTERNAL ()); // @@ RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR ()); connected = this->is_connected_i (); consumer = this->consumer_._retn (); if (connected) this->cleanup_i (); } // Notify the event channel.... this->event_channel_->disconnected (this); if (!connected) { return; } if (this->event_channel_->disconnect_callbacks ()) { try { consumer->disconnect_push_consumer (); } catch (const CORBA::Exception& ex) { // Ignore exceptions, we must isolate other clients from // problems on this one. ex._tao_print_exception ("ProxySupplier::disconnect_push_supplier"); } } }