mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2025-11-29 17:38:24 +08:00
43 lines
1.1 KiB
C++
43 lines
1.1 KiB
C++
#include "ace/Handle_Ops.h"
|
|
|
|
#include "ace/OS_NS_errno.h"
|
|
#include "ace/OS_NS_fcntl.h"
|
|
#include "ace/Time_Value.h"
|
|
|
|
|
|
ACE_BEGIN_VERSIONED_NAMESPACE_DECL
|
|
|
|
ACE_HANDLE
|
|
ACE::handle_timed_open (ACE_Time_Value *timeout,
|
|
const ACE_TCHAR *name,
|
|
int flags,
|
|
int perms,
|
|
LPSECURITY_ATTRIBUTES sa)
|
|
{
|
|
ACE_TRACE ("ACE::handle_timed_open");
|
|
|
|
if (timeout != 0)
|
|
{
|
|
#if !defined (ACE_WIN32)
|
|
// On Win32, ACE_NONBLOCK gets recognized as O_WRONLY so we
|
|
// don't use it there
|
|
flags |= ACE_NONBLOCK;
|
|
#endif /* ACE_WIN32 */
|
|
|
|
// Open the named pipe or file using non-blocking mode...
|
|
ACE_HANDLE const handle = ACE_OS::open (name, flags, perms, sa);
|
|
|
|
if (handle == ACE_INVALID_HANDLE
|
|
&& (errno == EWOULDBLOCK
|
|
&& (timeout->sec () > 0 || timeout->usec () > 0)))
|
|
// This expression checks if we were polling.
|
|
errno = ETIMEDOUT;
|
|
|
|
return handle;
|
|
}
|
|
else
|
|
return ACE_OS::open (name, flags, perms, sa);
|
|
}
|
|
|
|
ACE_END_VERSIONED_NAMESPACE_DECL
|