summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Huston <shuston@riverace.com>2000-05-25 22:39:17 +0000
committerSteve Huston <shuston@riverace.com>2000-05-25 22:39:17 +0000
commitdd0b0eaf4a26e9edce6e9fd4be7301d3858a8e6b (patch)
tree420a7cc94aa87c7b33c33737edb6c3cca4700037
parent334b6c494857fc608bee6dda6bb5719778b6abba (diff)
downloadATCD-dd0b0eaf4a26e9edce6e9fd4be7301d3858a8e6b.tar.gz
ChangeLogTag:Thu May 25 16:57:16 2000 Steve Huston <shuston@riverace.com>
-rw-r--r--ace/Select_Reactor_T.cpp19
1 files changed, 13 insertions, 6 deletions
diff --git a/ace/Select_Reactor_T.cpp b/ace/Select_Reactor_T.cpp
index a643a325cbc..02f7bfbea79 100644
--- a/ace/Select_Reactor_T.cpp
+++ b/ace/Select_Reactor_T.cpp
@@ -739,11 +739,16 @@ ACE_Select_Reactor_T<ACE_SELECT_REACTOR_TOKEN>::handle_error (void)
else
return this->check_handles ();
#else
+# if defined (ACE_PSOS)
+ else if (errno == EBADS)
+ return this->check_handles ();
+# else
else if (errno == EBADF)
return this->check_handles ();
+# endif /* ACE_PSOS */
else
return -1;
-#endif /* __MVS__ */
+#endif /* __MVS__ || ACE_WIN32 */
}
template <class ACE_SELECT_REACTOR_TOKEN> void
@@ -1254,10 +1259,10 @@ ACE_Select_Reactor_T<ACE_SELECT_REACTOR_TOKEN>::check_handles (void)
{
ACE_TRACE ("ACE_Select_Reactor_T::check_handles");
-#if defined (ACE_WIN32) || defined (__MVS__)
+#if defined (ACE_WIN32) || defined (__MVS__) || defined (ACE_PSOS)
ACE_Time_Value time_poll = ACE_Time_Value::zero;
ACE_Handle_Set rd_mask;
-#endif /* ACE_WIN32 || MVS */
+#endif /* ACE_WIN32 || MVS || ACE_PSOS */
ACE_Event_Handler *eh = 0;
int result = 0;
@@ -1273,11 +1278,13 @@ ACE_Select_Reactor_T<ACE_SELECT_REACTOR_TOKEN>::check_handles (void)
if (handle == ACE_INVALID_HANDLE)
continue;
-#if defined (ACE_WIN32) || defined (__MVS__)
+#if defined (ACE_WIN32) || defined (__MVS__) || defined (ACE_PSOS)
// Win32 needs to do the check this way because fstat won't work on
// a socket handle. MVS Open Edition needs to do it this way because,
// even though the docs say to check a handle with either select or
// fstat, the fstat method always says the handle is ok.
+ // pSOS needs to do it this way because file handles and socket handles
+ // are maintained by separate pieces of the system.
rd_mask.set_bit (handle);
if (ACE_OS::select (int (handle) + 1,
@@ -1289,7 +1296,7 @@ ACE_Select_Reactor_T<ACE_SELECT_REACTOR_TOKEN>::check_handles (void)
ACE_Event_Handler::ALL_EVENTS_MASK);
}
rd_mask.clr_bit (handle);
-#else /* !ACE_WIN32 && !MVS */
+#else /* !ACE_WIN32 && !MVS && !ACE_PSOS */
struct stat temp;
if (ACE_OS::fstat (handle, &temp) == -1)
@@ -1298,7 +1305,7 @@ ACE_Select_Reactor_T<ACE_SELECT_REACTOR_TOKEN>::check_handles (void)
this->remove_handler_i (handle,
ACE_Event_Handler::ALL_EVENTS_MASK);
}
-#endif /* ACE_WIN32 || MVS */
+#endif /* ACE_WIN32 || MVS || ACE_PSOS */
}
return result;