diff options
Diffstat (limited to 'TAO/tao/Strategies/UIOP_Transport.cpp')
-rw-r--r-- | TAO/tao/Strategies/UIOP_Transport.cpp | 39 |
1 files changed, 26 insertions, 13 deletions
diff --git a/TAO/tao/Strategies/UIOP_Transport.cpp b/TAO/tao/Strategies/UIOP_Transport.cpp index 5a438d9f994..c5f7486220e 100644 --- a/TAO/tao/Strategies/UIOP_Transport.cpp +++ b/TAO/tao/Strategies/UIOP_Transport.cpp @@ -5,10 +5,6 @@ #if TAO_HAS_UIOP == 1 - -ACE_RCSID (Strategies, UIOP_Transport, "$Id$") - - #include "UIOP_Connection_Handler.h" #include "UIOP_Profile.h" #include "tao/Timeprobe.h" @@ -26,7 +22,7 @@ ACE_RCSID (Strategies, UIOP_Transport, "$Id$") # include "UIOP_Transport.i" #endif /* ! __ACE_INLINE__ */ - +ACE_RCSID (Strategies, UIOP_Transport, "$Id$") TAO_UIOP_Transport::TAO_UIOP_Transport (TAO_UIOP_Connection_Handler *handler, TAO_ORB_Core *orb_core, @@ -62,14 +58,16 @@ TAO_UIOP_Transport::event_handler_i (void) } ssize_t -TAO_UIOP_Transport::send_i (const ACE_Message_Block *message_block, - const ACE_Time_Value *max_wait_time, - size_t *bytes_transferred) +TAO_UIOP_Transport::send_i (iovec *iov, int iovcnt, + size_t &bytes_transferred, + const ACE_Time_Value *max_wait_time) { - return ACE::send_n (this->connection_handler_->get_handle (), - message_block, - max_wait_time, - bytes_transferred); + ssize_t retval = this->connection_handler_->peer ().sendv (iov, iovcnt, + max_wait_time); + if (retval > 0) + bytes_transferred = retval; + + return retval; } ssize_t @@ -120,6 +118,21 @@ TAO_UIOP_Transport::read_process_message (ACE_Time_Value *max_wait_time, int TAO_UIOP_Transport::register_handler_i (void) { + if (TAO_debug_level > 4) + { + ACE_DEBUG ((LM_DEBUG, + "TAO (%P|%t) - IIOP_Transport::register_handler %d\n", + this->id ())); + } + if (this->connection_handler_->is_registered ()) + { + ACE_DEBUG ((LM_DEBUG, + "TAO (%P|%t) - IIOP_Transport::register_handler %d" + ", already registered\n", + this->id ())); + return 0; + } + // @@ It seems like this method should go away, the right reactor is // picked at object creation time. ACE_Reactor *r = this->orb_core_->reactor (); @@ -173,7 +186,7 @@ TAO_UIOP_Transport::send_message (TAO_OutputCDR &stream, // versions seem to need it though. Leaving it costs little. // This guarantees to send all data (bytes) or return an error. - ssize_t n = this->send_or_buffer (stub, + ssize_t n = this->send_message_i (stub, twoway, stream.begin (), max_wait_time); |