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