summaryrefslogtreecommitdiff
path: root/TAO/tao
diff options
context:
space:
mode:
authorbala <balanatarajan@users.noreply.github.com>2005-03-18 16:36:14 +0000
committerbala <balanatarajan@users.noreply.github.com>2005-03-18 16:36:14 +0000
commit700ddc43a5f0778d1db1ac1590b1e5093dcfddda (patch)
treed19b00e190b069cfd6171909d0162cf68e9117ab /TAO/tao
parentaee89763b5c955e471bd225c779fa76fd814e529 (diff)
downloadATCD-700ddc43a5f0778d1db1ac1590b1e5093dcfddda.tar.gz
ChangeLogTag:Fri Mar 18 10:34:48 2005 Balachandran Natarajan <bala@dre.vanderbilt.edu>
Diffstat (limited to 'TAO/tao')
-rw-r--r--TAO/tao/Transport.cpp6
-rw-r--r--TAO/tao/Transport.h9
-rw-r--r--TAO/tao/Transport_Cache_Manager.cpp9
3 files changed, 18 insertions, 6 deletions
diff --git a/TAO/tao/Transport.cpp b/TAO/tao/Transport.cpp
index 2f91c46f898..d9adb1800b6 100644
--- a/TAO/tao/Transport.cpp
+++ b/TAO/tao/Transport.cpp
@@ -177,16 +177,18 @@ TAO_Transport::provide_handler (TAO::Connection_Handler_Set &handlers)
handlers.insert (this->connection_handler_i ());
}
-void
+bool
TAO_Transport::provide_blockable_handler (TAO::Connection_Handler_Set &h)
{
if (this->ws_->non_blocking () ||
this->opening_connection_role_ == TAO::TAO_SERVER_ROLE)
- return;
+ return false;
(void) this->add_reference ();
h.insert (this->connection_handler_i ());
+
+ return true;
}
bool
diff --git a/TAO/tao/Transport.h b/TAO/tao/Transport.h
index b521afeaaed..0a8f84a6970 100644
--- a/TAO/tao/Transport.h
+++ b/TAO/tao/Transport.h
@@ -325,9 +325,14 @@ public:
* Called by the cache when the ORB is shuting down.
*
* @param handlers The TAO_Connection_Handler_Set into which the
- * transport should place its handler
+ * transport should place its handler if the transport has RW
+ * strategy on.
+ *
+ * @return true indicates a handler was added to the handler set.
+ * false indocates that the transport did not have a
+ * blockable handler that could be added.
*/
- void provide_blockable_handler (TAO::Connection_Handler_Set &handlers);
+ bool provide_blockable_handler (TAO::Connection_Handler_Set &handlers);
/// Register the handler with the reactor.
/**
diff --git a/TAO/tao/Transport_Cache_Manager.cpp b/TAO/tao/Transport_Cache_Manager.cpp
index 3c81ae877e1..c1c03f003dc 100644
--- a/TAO/tao/Transport_Cache_Manager.cpp
+++ b/TAO/tao/Transport_Cache_Manager.cpp
@@ -338,8 +338,13 @@ namespace TAO
{
// Get the transport to fill its associated connection's
// handler.
- (*iter).int_id_.transport ()->provide_blockable_handler (h);
- (*iter).int_id_.recycle_state (ENTRY_CLOSED);
+ bool retval =
+ (*iter).int_id_.transport ()->provide_blockable_handler (h);
+
+ // Do not mark the entry as closed if we don't have a
+ // blockable handler added
+ if (retval)
+ (*iter).int_id_.recycle_state (ENTRY_CLOSED);
}
return true;