summaryrefslogtreecommitdiff
path: root/ACE/ace/ACE.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/ace/ACE.cpp')
-rw-r--r--ACE/ace/ACE.cpp77
1 files changed, 76 insertions, 1 deletions
diff --git a/ACE/ace/ACE.cpp b/ACE/ace/ACE.cpp
index 6fec4b5d3a1..bfc8a867d6c 100644
--- a/ACE/ace/ACE.cpp
+++ b/ACE/ace/ACE.cpp
@@ -455,6 +455,12 @@ ACE::recv (ACE_HANDLE handle,
return ACE_OS::recv (handle, (char *) buf, len, flags);
else
{
+#if defined (ACE_HAS_RECV_TIMEDWAIT)
+ ACE_Time_Value copy = *timeout;
+ copy += ACE_OS::gettimeofday ();
+ timespec_t ts = copy;
+ return ::recv_timedwait (handle, buf, len, flags, &ts);
+#else
int val = 0;
if (ACE::enter_recv_timedwait (handle, timeout, val) ==-1)
return -1;
@@ -465,6 +471,7 @@ ACE::recv (ACE_HANDLE handle,
ACE::restore_non_blocking_mode (handle, val);
return bytes_transferred;
}
+#endif /* ACE_HAS_RECV_TIMEDWAIT */
}
}
@@ -506,6 +513,12 @@ ACE::recv (ACE_HANDLE handle,
return ACE::recv_i (handle, buf, n);
else
{
+#if defined (ACE_HAS_READ_TIMEDWAIT)
+ ACE_Time_Value copy = *timeout;
+ copy += ACE_OS::gettimeofday ();
+ timespec_t ts = copy;
+ return ::read_timedwait (handle, buf, n, &ts);
+#else
int val = 0;
if (ACE::enter_recv_timedwait (handle, timeout, val) == -1)
return -1;
@@ -515,6 +528,7 @@ ACE::recv (ACE_HANDLE handle,
ACE::restore_non_blocking_mode (handle, val);
return bytes_transferred;
}
+#endif /* ACE_HAS_READ_TIMEDWAIT */
}
}
@@ -528,6 +542,12 @@ ACE::recvmsg (ACE_HANDLE handle,
return ACE_OS::recvmsg (handle, msg, flags);
else
{
+#if defined (ACE_HAS_RECVMSG_TIMEDWAIT)
+ ACE_Time_Value copy = *timeout;
+ copy += ACE_OS::gettimeofday ();
+ timespec_t ts = copy;
+ return ::recvmsg_timedwait (handle, msg, flags, &ts);
+#else
int val = 0;
if (ACE::enter_recv_timedwait (handle, timeout, val) == -1)
return -1;
@@ -537,6 +557,7 @@ ACE::recvmsg (ACE_HANDLE handle,
ACE::restore_non_blocking_mode (handle, val);
return bytes_transferred;
}
+#endif /* ACE_HAS_RECVMSG_TIMEDWAIT */
}
}
@@ -553,6 +574,12 @@ ACE::recvfrom (ACE_HANDLE handle,
return ACE_OS::recvfrom (handle, buf, len, flags, addr, addrlen);
else
{
+#if defined (ACE_HAS_RECVFROM_TIMEDWAIT)
+ ACE_Time_Value copy = *timeout;
+ copy += ACE_OS::gettimeofday ();
+ timespec_t ts = copy;
+ return ::recvfrom_timedwait (handle, buf, len, flags, addr, addrlen, &ts);
+#else
int val = 0;
if (ACE::enter_recv_timedwait (handle, timeout, val) == -1)
return -1;
@@ -563,6 +590,7 @@ ACE::recvfrom (ACE_HANDLE handle,
ACE::restore_non_blocking_mode (handle, val);
return bytes_transferred;
}
+#endif /* ACE_HAS_RECVFROM_TIMEDWAIT */
}
}
@@ -967,6 +995,12 @@ ACE::recvv (ACE_HANDLE handle,
return ACE_OS::recvv (handle, iov, iovcnt);
else
{
+#if defined (ACE_HAS_READV_TIMEDWAIT)
+ ACE_Time_Value copy = *timeout;
+ copy += ACE_OS::gettimeofday ();
+ timespec_t ts = copy;
+ return ::readv_timedwait (handle, iov, iovcnt, &ts);
+#else
int val = 0;
if (ACE::enter_recv_timedwait (handle, timeout, val) == -1)
return -1;
@@ -976,6 +1010,7 @@ ACE::recvv (ACE_HANDLE handle,
ACE::restore_non_blocking_mode (handle, val);
return bytes_transferred;
}
+#endif /* ACE_HAS_READV_TIMEDWAIT */
}
}
@@ -1230,6 +1265,12 @@ ACE::send (ACE_HANDLE handle,
return ACE_OS::send (handle, (const char *) buf, n, flags);
else
{
+#if defined (ACE_HAS_SEND_TIMEDWAIT)
+ ACE_Time_Value copy = *timeout;
+ copy += ACE_OS::gettimeofday();
+ timespec_t ts = copy;
+ return ::send_timedwait (handle, buf, n, flags, &ts);
+#else
int val = 0;
if (ACE::enter_send_timedwait (handle, timeout, val) == -1)
return -1;
@@ -1239,6 +1280,7 @@ ACE::send (ACE_HANDLE handle,
ACE::restore_non_blocking_mode (handle, val);
return bytes_transferred;
}
+#endif /* ACE_HAS_SEND_TIMEDWAIT */
}
}
@@ -1279,6 +1321,12 @@ ACE::send (ACE_HANDLE handle,
return ACE::send_i (handle, buf, n);
else
{
+#if defined (ACE_HAS_WRITE_TIMEDWAIT)
+ ACE_Time_Value copy = *timeout;
+ copy += ACE_OS::gettimeofday ();
+ timespec_t ts = copy;
+ return ::write_timedwait (handle, buf, n, &ts);
+#else
int val = 0;
if (ACE::enter_send_timedwait (handle, timeout, val) == -1)
return -1;
@@ -1288,6 +1336,7 @@ ACE::send (ACE_HANDLE handle,
ACE::restore_non_blocking_mode (handle, val);
return bytes_transferred;
}
+#endif /* ACE_HAS_WRITE_TIMEDWAIT */
}
}
@@ -1301,6 +1350,12 @@ ACE::sendmsg (ACE_HANDLE handle,
return ACE_OS::sendmsg (handle, msg, flags);
else
{
+#if defined (ACE_HAS_SENDMSG_TIMEDWAIT)
+ ACE_Time_Value copy = *timeout;
+ copy += ACE_OS::gettimeofday ();
+ timespec_t ts = copy;
+ return ::sendmsg_timedwait (handle, msg, flags, &ts);
+#else
int val = 0;
if (ACE::enter_send_timedwait (handle, timeout, val) == -1)
return -1;
@@ -1310,6 +1365,7 @@ ACE::sendmsg (ACE_HANDLE handle,
ACE::restore_non_blocking_mode (handle, val);
return bytes_transferred;
}
+#endif /* ACE_HAS_SENDMSG_TIMEDWAIT */
}
}
@@ -1326,6 +1382,12 @@ ACE::sendto (ACE_HANDLE handle,
return ACE_OS::sendto (handle, buf, len, flags, addr, addrlen);
else
{
+#if defined (ACE_HAS_SENDTO_TIMEDWAIT)
+ ACE_Time_Value copy = *timeout;
+ copy += ACE_OS::gettimeofday ();
+ timespec_t ts = copy;
+ return ::sendto_timedwait (handle, buf, len, flags, addr, addrlen, ts);
+#else
int val = 0;
if (ACE::enter_send_timedwait (handle, timeout, val) == -1)
return -1;
@@ -1336,6 +1398,7 @@ ACE::sendto (ACE_HANDLE handle,
ACE::restore_non_blocking_mode (handle, val);
return bytes_transferred;
}
+#endif /* ACE_HAS_SENDTO_TIMEDWAIT */
}
}
@@ -1742,6 +1805,12 @@ ACE::sendv (ACE_HANDLE handle,
return ACE_OS::sendv (handle, iov, iovcnt);
else
{
+#if defined (ACE_HAS_WRITEV_TIMEDWAIT)
+ ACE_Time_Value copy = *timeout;
+ copy += ACE_OS::gettimeofday ();
+ timespec_t ts = copy;
+ return ::sendv_timedwait (handle, iov, iovcnt, &ts);
+#else
int val = 0;
if (ACE::enter_send_timedwait (handle, timeout, val) == -1)
return -1;
@@ -1751,6 +1820,7 @@ ACE::sendv (ACE_HANDLE handle,
ACE::restore_non_blocking_mode (handle, val);
return bytes_transferred;
}
+#endif /* ACE_HAS_WRITEV_TIMEDWAIT */
}
}
@@ -2818,8 +2888,13 @@ ACE::fork (const ACE_TCHAR *program_name,
}
// Parent process waits for child to terminate.
- ACE_exitcode status;
+#if defined (ACE_HAS_UNION_WAIT)
+ union wait status;
+ if (pid < 0 || ACE_OS::waitpid (pid, &(status.w_status), 0) < 0)
+#else
+ ACE_exitcode status;
if (pid < 0 || ACE_OS::waitpid (pid, &status, 0) < 0)
+#endif /* ACE_HAS_UNION_WAIT */
return -1;
// child terminated by calling exit()?