diff options
author | vzykov <vzykov@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2010-09-02 14:51:58 +0000 |
---|---|---|
committer | vzykov <vzykov@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2010-09-02 14:51:58 +0000 |
commit | 9d52cd71390d9e0de7d6461bc186b9da28f2b652 (patch) | |
tree | b12714f96f26114214f514ee8c1fe6bdc34d2706 /ACE/ace/ACE.cpp | |
parent | 74a8ffda3b866a763ca5c0d54b2ab4cf41ce206a (diff) | |
download | ATCD-9d52cd71390d9e0de7d6461bc186b9da28f2b652.tar.gz |
Thu Sep 2 14:46:56 UTC 2010 Vladimir Zykov <vladimir.zykov@prismtech.com>
* ace/Acceptor.cpp:
* ace/SOCK_IO.cpp:
* ace/SOCK_Dgram.cpp:
* ace/ACE.cpp:
* tests/SOCK_Test.cpp:
* tests/MT_SOCK_Test.cpp:
* NEWS:
Reverted both commits by Steve Huston related to handle_ready()
and a NEWS entry.
Wed Sep 1 19:31:24 UTC 2010 Steve Huston <shuston@riverace.com>
Fri Aug 27 19:17:11 UTC 2010 Steve Huston <shuston@riverace.com>
This is necessary for a quick release of 1.8.2.
Diffstat (limited to 'ACE/ace/ACE.cpp')
-rw-r--r-- | ACE/ace/ACE.cpp | 55 |
1 files changed, 31 insertions, 24 deletions
diff --git a/ACE/ace/ACE.cpp b/ACE/ace/ACE.cpp index 925be0a034b..ba5bbd3a662 100644 --- a/ACE/ace/ACE.cpp +++ b/ACE/ace/ACE.cpp @@ -33,9 +33,9 @@ extern "C" int maxFiles; #include "ace/ACE.inl" #endif /* __ACE_INLINE__ */ -#if defined (ACE_HAS_POLL) +#if defined (ACE_HAS_POLL) && defined (ACE_HAS_LIMITED_SELECT) # include "ace/OS_NS_poll.h" -#endif /* ACE_HAS_POLL */ +#endif /* ACE_HAS_POLL && ACE_HAS_LIMITED_SELECT */ // Open versioned namespace, if enabled by the user. ACE_BEGIN_VERSIONED_NAMESPACE_DECL @@ -2169,19 +2169,14 @@ ACE::handle_ready (ACE_HANDLE handle, int write_ready, int exception_ready) { -#if defined (ACE_HAS_POLL) +#if defined (ACE_HAS_POLL) && defined (ACE_HAS_LIMITED_SELECT) + ACE_UNUSED_ARG (write_ready); ACE_UNUSED_ARG (exception_ready); struct pollfd fds; fds.fd = handle; - fds.events = read_ready ? POLLIN : 0; - - if( write_ready ) - { - fds.events |= POLLOUT; - } - + fds.events = read_ready ? POLLIN : POLLOUT; fds.revents = 0; int result = ACE_OS::poll (&fds, 1, timeout); @@ -2204,9 +2199,21 @@ ACE::handle_ready (ACE_HANDLE handle, exception_ready ? handle_set.fdset () : 0, // exception_fds. timeout); -#endif /* ACE_HAS_POLL */ +#endif /* ACE_HAS_POLL && ACE_HAS_LIMITED_SELECT */ - return result; + switch (result) + { + case 0: // Timer expired. + errno = ETIME; + /* FALLTHRU */ + case -1: // we got here directly - select() returned -1. + return -1; + case 1: // Handle has data. + /* FALLTHRU */ + default: // default is case result > 0; return a + // ACE_ASSERT (result == 1); + return result; + } } int @@ -2521,7 +2528,7 @@ ACE::handle_timed_complete (ACE_HANDLE h, { ACE_TRACE ("ACE::handle_timed_complete"); -#if !defined (ACE_WIN32) && defined (ACE_HAS_POLL) +#if !defined (ACE_WIN32) && defined (ACE_HAS_POLL) && defined (ACE_HAS_LIMITED_SELECT) struct pollfd fds; @@ -2534,7 +2541,7 @@ ACE::handle_timed_complete (ACE_HANDLE h, ACE_Handle_Set wr_handles; rd_handles.set_bit (h); wr_handles.set_bit (h); -#endif /* !ACE_WIN32 && ACE_HAS_POLL */ +#endif /* !ACE_WIN32 && ACE_HAS_POLL && ACE_HAS_LIMITED_SELECT */ #if defined (ACE_WIN32) // Winsock is different - it sets the exception bit for failed connect, @@ -2554,7 +2561,7 @@ ACE::handle_timed_complete (ACE_HANDLE h, ex_handles, timeout); #else -# if defined (ACE_HAS_POLL) +# if defined (ACE_HAS_POLL) && defined (ACE_HAS_LIMITED_SELECT) int n = ACE_OS::poll (&fds, 1, timeout); @@ -2572,7 +2579,7 @@ ACE::handle_timed_complete (ACE_HANDLE h, wr_handles, 0, timeout); -# endif /* ACE_HAS_POLL */ +# endif /* ACE_HAS_POLL && ACE_HAS_LIMITED_SELECT */ #endif /* ACE_WIN32 */ // If we failed to connect within the time period allocated by the @@ -2606,18 +2613,18 @@ ACE::handle_timed_complete (ACE_HANDLE h, } #else if (is_tli) -# if defined (ACE_HAS_POLL) +# if defined (ACE_HAS_POLL) && defined (ACE_HAS_LIMITED_SELECT) need_to_check = (fds.revents & POLLIN) && !(fds.revents & POLLOUT); # else need_to_check = rd_handles.is_set (h) && !wr_handles.is_set (h); -# endif /* ACE_HAS_POLL */ +# endif /* ACE_HAS_POLL && ACE_HAS_LIMITED_SELECT */ else -# if defined (ACE_HAS_POLL) +# if defined (ACE_HAS_POLL) && defined (ACE_HAS_LIMITED_SELECT) need_to_check = (fds.revents & POLLIN); # else need_to_check = true; -# endif /* ACE_HAS_POLL */ +# endif /* ACE_HAS_POLL && ACE_HAS_LIMITED_SELECT */ #endif /* ACE_WIN32 */ if (need_to_check) @@ -2679,7 +2686,7 @@ ACE::handle_timed_accept (ACE_HANDLE listener, if (listener == ACE_INVALID_HANDLE) return -1; -#if defined (ACE_HAS_POLL) +#if defined (ACE_HAS_POLL) && defined (ACE_HAS_LIMITED_SELECT) struct pollfd fds; @@ -2691,13 +2698,13 @@ ACE::handle_timed_accept (ACE_HANDLE listener, // Use the select() implementation rather than poll(). ACE_Handle_Set rd_handle; rd_handle.set_bit (listener); -#endif /* ACE_HAS_POLL */ +#endif /* ACE_HAS_POLL && ACE_HAS_LIMITED_SELECT */ // We need a loop here if <restart> is enabled. for (;;) { -#if defined (ACE_HAS_POLL) +#if defined (ACE_HAS_POLL) && defined (ACE_HAS_LIMITED_SELECT) int n = ACE_OS::poll (&fds, 1, timeout); @@ -2713,7 +2720,7 @@ ACE::handle_timed_accept (ACE_HANDLE listener, int n = ACE_OS::select (select_width, rd_handle, 0, 0, timeout); -#endif /* ACE_HAS_POLL */ +#endif /* ACE_HAS_POLL && ACE_HAS_LIMITED_SELECT */ switch (n) { |