diff options
Diffstat (limited to 'TAO/tao/Connection_Handler.cpp')
-rw-r--r-- | TAO/tao/Connection_Handler.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/TAO/tao/Connection_Handler.cpp b/TAO/tao/Connection_Handler.cpp index 601d11ac066..c154e90456c 100644 --- a/TAO/tao/Connection_Handler.cpp +++ b/TAO/tao/Connection_Handler.cpp @@ -209,6 +209,43 @@ TAO_Connection_Handler::handle_output_eh ( int TAO_Connection_Handler::handle_input_eh ( + ACE_HANDLE h, ACE_Event_Handler *eh) +{ + if (this->transport ()->acts_as_server () && + this->tss_resources_->upcalls_temporarily_suspended_on_this_thread_) + { +#if 0 // DON'T IMPLEMENT YET, BUT RECORD THE IDEA FOR POSTERITY + // ACE_Time_Value this->spin_prevention_backoff_delay_; + ACE_OS::usleep (this->spin_prevention_backoff_delay_); + this->spin_prevention_backoff_delay_ = 2 * this->spin_prevention_backoff_delay_ + 1; +#endif + if (TAO_debug_level > 6) + ACE_DEBUG ((LM_DEBUG, + "(%P|%t) Connection_Handler[%d] - not going to handle_input " + "on Transport %d " + "because upcalls temporarily suspended on this thread\n", + this->transport()->id(), + this->transport()->id())); + return 0; + } + +#if 0 + this->spin_prevention_backoff_delay_ = 0; +#endif + + int result = this->handle_input_internal (h, eh); + + if (result == -1) + { + this->close_connection (); + return 0; + } + + return result; +} + +int +TAO_Connection_Handler::handle_input_internal ( ACE_HANDLE h, ACE_Event_Handler * eh) { // Let the transport know that it is used |