summaryrefslogtreecommitdiff
path: root/ACE/ace/ACE.cpp
diff options
context:
space:
mode:
authorvzykov <vzykov@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2010-09-02 14:51:58 +0000
committervzykov <vzykov@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2010-09-02 14:51:58 +0000
commit9d52cd71390d9e0de7d6461bc186b9da28f2b652 (patch)
treeb12714f96f26114214f514ee8c1fe6bdc34d2706 /ACE/ace/ACE.cpp
parent74a8ffda3b866a763ca5c0d54b2ab4cf41ce206a (diff)
downloadATCD-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.cpp55
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)
{