diff options
Diffstat (limited to 'TAO/tao/Strategies/SHMIOP_Transport.cpp')
-rw-r--r-- | TAO/tao/Strategies/SHMIOP_Transport.cpp | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/TAO/tao/Strategies/SHMIOP_Transport.cpp b/TAO/tao/Strategies/SHMIOP_Transport.cpp index 3931ecfc0b7..a3bb82d6616 100644 --- a/TAO/tao/Strategies/SHMIOP_Transport.cpp +++ b/TAO/tao/Strategies/SHMIOP_Transport.cpp @@ -90,12 +90,23 @@ TAO_SHMIOP_Transport::idle (void) } ssize_t -TAO_SHMIOP_Transport::send (const ACE_Message_Block *message_block, - const ACE_Time_Value *max_wait_time, - size_t *) +TAO_SHMIOP_Transport::send (iovec *iov, int iovcnt, + size_t &bytes_transferred, + const ACE_Time_Value *max_wait_time) { - return this->service_handler ()->peer ().send (message_block, - max_wait_time); + bytes_transferred = 0; + for (int i = 0; i < iovcnt; ++i) + { + ssize_t retval = + this->service_handler ()->peer ().send (iov[i].iov_base, + iov[i].iov_len, + max_wait_time); + if (retval > 0) + bytes_transferred += retval; + if (retval <= 0) + return retval; + } + return bytes_transferred; } ssize_t |