diff options
author | William R. Otte <wotte@dre.vanderbilt.edu> | 2008-03-04 14:51:23 +0000 |
---|---|---|
committer | William R. Otte <wotte@dre.vanderbilt.edu> | 2008-03-04 14:51:23 +0000 |
commit | 99aa8c60282c7b8072eb35eb9ac815702f5bf586 (patch) | |
tree | bda96bf8c3a4c2875a083d7b16720533c8ffeaf4 /ACE/ace/OS_NS_sys_select.inl | |
parent | c4078c377d74290ebe4e66da0b4975da91732376 (diff) | |
download | ATCD-99aa8c60282c7b8072eb35eb9ac815702f5bf586.tar.gz |
undoing accidental deletion
Diffstat (limited to 'ACE/ace/OS_NS_sys_select.inl')
-rw-r--r-- | ACE/ace/OS_NS_sys_select.inl | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/ACE/ace/OS_NS_sys_select.inl b/ACE/ace/OS_NS_sys_select.inl new file mode 100644 index 00000000000..d905837d992 --- /dev/null +++ b/ACE/ace/OS_NS_sys_select.inl @@ -0,0 +1,80 @@ +// -*- C++ -*- +// +// $Id$ + +#include "ace/OS_NS_errno.h" +#include "ace/OS_NS_macros.h" +#include "ace/Time_Value.h" + +ACE_BEGIN_VERSIONED_NAMESPACE_DECL + +// It would be really cool to add another version of select that would +// function like the one we're defending against below! +ACE_INLINE int +ACE_OS::select (int width, + fd_set *rfds, fd_set *wfds, fd_set *efds, + const ACE_Time_Value *timeout) +{ + ACE_OS_TRACE ("ACE_OS::select"); +#if defined (ACE_HAS_NONCONST_SELECT_TIMEVAL) + // We must defend against non-conformity! + timeval copy; + timeval *timep = 0; + + if (timeout != 0) + { + copy = *timeout; + timep = © + } + else + timep = 0; +#else + const timeval *timep = (timeout == 0 ? (const timeval *)0 : *timeout); +#endif /* ACE_HAS_NONCONST_SELECT_TIMEVAL */ +#if defined (ACE_LACKS_SELECT) + ACE_UNUSED_ARG (width); + ACE_UNUSED_ARG (rfds); + ACE_UNUSED_ARG (wfds); + ACE_UNUSED_ARG (efds); + ACE_UNUSED_ARG (timeout); + ACE_NOTSUP_RETURN (-1); +#elif defined(ACE_TANDEM_T1248_PTHREADS) + ACE_SOCKCALL_RETURN (::spt_select (width, rfds, wfds, efds, timep), + int, -1); +#else + ACE_SOCKCALL_RETURN (::select (width, rfds, wfds, efds, timep), + int, -1); +#endif +} + +ACE_INLINE int +ACE_OS::select (int width, + fd_set *rfds, fd_set *wfds, fd_set *efds, + const ACE_Time_Value &timeout) +{ + ACE_OS_TRACE ("ACE_OS::select"); +#if defined (ACE_HAS_NONCONST_SELECT_TIMEVAL) +# define ___ACE_TIMEOUT © + timeval copy = timeout; +#else +# define ___ACE_TIMEOUT timep + const timeval *timep = timeout; +#endif /* ACE_HAS_NONCONST_SELECT_TIMEVAL */ +#if defined (ACE_LACKS_SELECT) + ACE_UNUSED_ARG (width); + ACE_UNUSED_ARG (rfds); + ACE_UNUSED_ARG (wfds); + ACE_UNUSED_ARG (efds); + ACE_UNUSED_ARG (timeout); + ACE_NOTSUP_RETURN (-1); +#elif defined(ACE_TANDEM_T1248_PTHREADS) + ACE_SOCKCALL_RETURN (::spt_select (width, rfds, wfds, efds, ___ACE_TIMEOUT), + int, -1); +#else + ACE_SOCKCALL_RETURN (::select (width, rfds, wfds, efds, ___ACE_TIMEOUT), + int, -1); +#endif +#undef ___ACE_TIMEOUT +} + +ACE_END_VERSIONED_NAMESPACE_DECL |