summaryrefslogtreecommitdiff
path: root/TAO/tao/Connection_Handler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/Connection_Handler.cpp')
-rw-r--r--TAO/tao/Connection_Handler.cpp37
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