diff options
Diffstat (limited to 'ACE/ace/ACE.cpp')
-rw-r--r-- | ACE/ace/ACE.cpp | 77 |
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()? |