Hash :
9935d5b0
Author :
Date :
2009-01-13T21:39:32
Fix win32 compilation. Surprisingly, unit tests pass too. svn:r1002
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
#ifndef _EVENT_UTIL_INTERNAL_H
#define _EVENT_UTIL_INTERNAL_H
#include "event-config.h"
#include <errno.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Internal use only: macros to match patterns of error codes in a
cross-platform way. We need these macros because of two historical
reasons: first, nonblocking IO functions are generally written to give an
error on the "blocked now, try later" case, so sometimes an error from a
read, write, connect, or accept means "no error; just wait for more
data," and we need to look at the error code. Second, Windows defines
a different set of error codes for sockets. */
#ifndef WIN32
/* True iff e is an error that means a read/write operation can be retried. */
#define EVUTIL_ERR_RW_RETRIABLE(e) \
((e) == EINTR || (e) == EAGAIN)
/* True iff e is an error that means an accept can be retried. */
#define EVUTIL_ERR_CONNECT_RETRIABLE(e) \
((e) == EINTR || (e) == EINPROGRESS)
/* True iff e is an error that means a connect can be retried. */
#define EVUTIL_ERR_ACCEPT_RETRIABLE(e) \
((e) == EINTR || (e) == EAGAIN || (e) == ECONNABORTED)
#else
#define EVUTIL_ERR_RW_RETRIABLE(e) \
((e) == WSAEWOULDBLOCK || \
(e) == WSAEINTR)
#define EVUTIL_ERR_CONNECT_RETRIABLE(e) \
((e) == WSAEWOULDBLOCK || \
(e) == WSAEINTR || \
(e) == WSAEINPROGRESS || \
(e) == WSAEINVAL)
#define EVUTIL_ERR_ACCEPT_RETRIABLE(e) \
EVUTIL_ERR_RW_RETRIABLE(e)
#endif
#ifdef __cplusplus
}
#endif
#endif