include
ecl
io
poll.hpp
Go to the documentation of this file.
1
8
/*****************************************************************************
9
** Ifdefs
10
*****************************************************************************/
11
12
#ifndef ECL_IO_POLL_HPP_
13
#define ECL_IO_POLL_HPP_
14
15
/*****************************************************************************
16
** Includes
17
*****************************************************************************/
18
19
#include "
sockets.hpp
"
20
21
#ifdef ECL_IS_WIN32
22
// nothing special here.
23
#else
24
#include <poll.h>
25
#endif
26
27
/*****************************************************************************
28
** Macros
29
*****************************************************************************/
30
31
#ifdef ECL_IS_WIN32
32
#ifndef POLLRDNORM
33
#define POLLRDNORM 0x0100
/* mapped to read fds_set */
34
#endif
35
#ifndef POLLRDBAND
36
#define POLLRDBAND 0x0200
/* mapped to exception fds_set */
37
#endif
38
#ifndef POLLIN
39
#define POLLIN (POLLRDNORM | POLLRDBAND)
/* There is data to read. */
40
#endif
41
#ifndef POLLPRI
42
#define POLLPRI 0x0400
/* There is urgent data to read. */
43
#endif
44
45
#ifndef POLLWRNORM
46
#define POLLWRNORM 0x0010
/* mapped to write fds_set */
47
#endif
48
#ifndef POLLOUT
49
#define POLLOUT (POLLWRNORM)
/* Writing now will not block. */
50
#endif
51
#ifndef POLLWRBAND
52
#define POLLWRBAND 0x0020
/* mapped to write fds_set */
53
#endif
54
#ifndef POLLERR
55
#define POLLERR 0x0001
/* Error condition. */
56
#endif
57
#ifndef POLLHUP
58
#define POLLHUP 0x0002
/* Hung up. */
59
#endif
60
#ifndef POLLNVAL
61
#define POLLNVAL 0x0004
/* Invalid polling request. */
62
#endif
63
#else
64
// Nothing to see here!
65
#endif
66
67
/*****************************************************************************
68
** Namespaces
69
*****************************************************************************/
70
71
namespace
ecl
{
72
73
/*****************************************************************************
74
** Types
75
*****************************************************************************/
76
77
#ifdef ECL_IS_WIN32
78
/* poll emulation support */
79
typedef
struct
socket_pollfd
{
80
socket_descriptor
fd;
/* file descriptor */
81
short
events;
/* requested events */
82
short
revents;
/* returned events */
83
}
socket_pollfd
;
84
85
typedef
unsigned
long
int
nfds_t;
86
#else
87
typedef
struct
pollfd
socket_pollfd
;
88
typedef ::nfds_t
ndfs_t
;
89
#endif
90
91
92
ecl_io_PUBLIC
int
poll_sockets
(
socket_pollfd
*fds, nfds_t nfds,
int
timeout);
93
94
}
// namespace ecl
95
96
#endif
/* ECL_IO_POLL_HPP_ */
ecl::ndfs_t
::nfds_t ndfs_t
Definition:
poll.hpp:96
ecl::socket_descriptor
int socket_descriptor
Cross-platform typedef for a socket file descriptor.
Definition:
sockets.hpp:64
sockets.hpp
Cross platform socket api.
ecl::socket_pollfd
struct pollfd socket_pollfd
Definition:
poll.hpp:95
ecl_io_PUBLIC
#define ecl_io_PUBLIC
Definition:
macros.hpp:28
ecl::poll_sockets
ecl_io_PUBLIC int poll_sockets(socket_pollfd *fds, nfds_t nfds, int timeout)
Definition:
lib/poll.cpp:29
ecl
ecl_io
Author(s): Daniel Stonier
autogenerated on Wed Mar 2 2022 00:13:55