diff options
Diffstat (limited to 'TAO/tao/Strategies/UIOP_Transport.cpp')
-rw-r--r-- | TAO/tao/Strategies/UIOP_Transport.cpp | 56 |
1 files changed, 26 insertions, 30 deletions
diff --git a/TAO/tao/Strategies/UIOP_Transport.cpp b/TAO/tao/Strategies/UIOP_Transport.cpp index 9dbb2bd0019..730931105f3 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,6 +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, @@ -61,22 +58,17 @@ TAO_UIOP_Transport::event_handler_i (void) return this->connection_handler_; } -TAO_Pluggable_Messaging * -TAO_UIOP_Transport::messaging_object (void) -{ - return this->messaging_object_; -} - - 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 @@ -127,6 +119,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 (); @@ -180,7 +187,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); @@ -196,17 +203,6 @@ TAO_UIOP_Transport::send_message (TAO_OutputCDR &stream, return -1; } - // EOF. - if (n == 0) - { - if (TAO_debug_level) - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("TAO: (%P|%t|%N|%l) send_message () \n") - ACE_TEXT ("EOF, closing transport %d\n"), - this->id ())); - return -1; - } - return 1; } |