FreeRDP
Loading...
Searching...
No Matches
pollset.h
1
19#ifndef WINPR_LIBWINPR_SYNCH_POLLSET_H_
20#define WINPR_LIBWINPR_SYNCH_POLLSET_H_
21
22#include <winpr/wtypes.h>
23#include <winpr/synch.h>
24
25#include <winpr/config.h>
26
27#ifndef _WIN32
28
29#ifdef WINPR_HAVE_POLL_H
30#include <poll.h>
31#else
32#include <sys/select.h>
33
34typedef struct
35{
36 int fd;
37 ULONG mode;
38} FdIndex;
39#endif
40
42{
43#ifdef WINPR_HAVE_POLL_H
44 struct pollfd* pollset;
45 struct pollfd staticSet[MAXIMUM_WAIT_OBJECTS];
46 BOOL isStatic;
47#else
48 FdIndex* fdIndex;
49 fd_set rset_base;
50 fd_set rset;
51 fd_set wset_base;
52 fd_set wset;
53 int nread, nwrite;
54 int maxFd;
55#endif
56 size_t fillIndex;
57 size_t size;
58#if defined(__EMSCRIPTEN__)
59 size_t yieldCounter;
60#endif
61};
62
63typedef struct winpr_poll_set WINPR_POLL_SET;
64
65BOOL pollset_init(WINPR_POLL_SET* set, size_t nhandles);
66void pollset_uninit(WINPR_POLL_SET* set);
67void pollset_reset(WINPR_POLL_SET* set);
68BOOL pollset_add(WINPR_POLL_SET* set, int fd, ULONG mode);
69int pollset_poll(WINPR_POLL_SET* set, DWORD dwMilliseconds);
70
71BOOL pollset_isSignaled(WINPR_POLL_SET* set, size_t idx);
72BOOL pollset_isReadSignaled(WINPR_POLL_SET* set, size_t idx);
73BOOL pollset_isWriteSignaled(WINPR_POLL_SET* set, size_t idx);
74
75#endif
76
77#endif /* WINPR_LIBWINPR_SYNCH_POLLSET_H_ */