COROIO: coroio/all.hpp Source File
COROIO
Loading...
Searching...
No Matches
all.hpp
1#pragma once
2
3#include <system_error>
4#include <unordered_map>
5#include <vector>
6#include <iostream>
7#include <queue>
8
9#include <cstdint>
10#include <cstdio>
11
12#include <assert.h>
13
14#include "init.hpp"
15#include "address.hpp"
16#include "poller.hpp"
17#include "notifier.hpp"
18
19#include <coroio/backends/select.hpp>
20#include <coroio/backends/poll.hpp>
21
22#ifdef __linux__
23
24#ifndef HAVE_EPOLL
25#define HAVE_EPOLL
26#endif
27
28#include <coroio/backends/epoll.hpp>
29#include <coroio/backends/uring.hpp>
30#endif
31
32#ifdef _WIN32
33
34#ifndef HAVE_EPOLL
35#define HAVE_EPOLL
36#endif
37
38#ifndef HAVE_IOCP
39#define HAVE_IOCP
40#endif
41
42#include <coroio/backends/iocp.hpp>
43#include <coroio/backends/epoll.hpp>
44#endif
45
46#if defined(__APPLE__) || defined(__FreeBSD__)
47
48#ifndef HAVE_KQUEUE
49#define HAVE_KQUEUE
50#endif
51
52#include <coroio/backends/kqueue.hpp>
53#endif
54
55#include "loop.hpp"
56#include "promises.hpp"
57#include "socket.hpp"
58#include "corochain.hpp"
59#include "sockutils.hpp"
60#include "ssl.hpp"
61
62#ifdef _WIN32
63int pipe(int pipes[2]);
64int socketpair(int domain, int type, int protocol, SOCKET socks[2]);
65int socketpair(int domain, int type, int protocol, int socks[2]);
66#endif
67
68namespace NNet {
69#if defined(__APPLE__) || defined(__FreeBSD__)
70using TDefaultPoller = TKqueue;
71#elif defined(__linux__)
72using TDefaultPoller = TEPoll;
73#elif defined(_WIN32)
74using TDefaultPoller = TIOCp;
75#else
76using TDefaultPoller = TPoll;
77#endif
78
197
198} // namespace NNet
Linux-specific poller implementation using epoll.
Definition epoll.hpp:40
IOCP-based poller for asynchronous I/O on Windows.
Definition iocp.hpp:48
Poller implementation using kqueue (for macOS and FreeBSD).
Definition kqueue.hpp:36
Poller implementation based on the poll() system call.
Definition poll.hpp:39
Implementation of a promise/future system for coroutines.