Orbit Framework
An ultra-modern, asynchronous, cross-platform C++ Web Framework.
Loading...
Searching...
No Matches
Proactor.hpp
Go to the documentation of this file.
1#pragma once
2#include <functional>
4#include <sys/types.h>
5
6namespace network {
7
8class Proactor {
9public:
10 virtual ~Proactor() = default;
11
12 // Block and wait for completions
13 virtual void run_once(int timeout_ms) = 0;
14
15 // Asynchronous read
16 virtual void async_read(socket_t fd, void* buffer, size_t size, std::function<void(ssize_t bytes_read)> callback) = 0;
17
18 // Asynchronous write
19 virtual void async_write(socket_t fd, const void* buffer, size_t size, std::function<void(ssize_t bytes_written)> callback) = 0;
20
21 // Asynchronous wait for read readiness
22 virtual void async_wait_read(socket_t fd, std::function<void()> callback) = 0;
23
24 // Asynchronous wait for write readiness
25 virtual void async_wait_write(socket_t fd, std::function<void()> callback) = 0;
26
27 // Asynchronous sendfile
28 virtual void async_sendfile(socket_t out_fd, int in_fd, off_t offset, size_t count, std::function<void(ssize_t bytes_written)> callback) = 0;
29
30 // Asynchronous accept
31 virtual void async_accept(socket_t fd, std::function<void(socket_t new_fd, sockaddr_in addr)> callback) = 0;
32
33 // Asynchronous connect
34 virtual void async_connect(socket_t fd, const sockaddr_in& addr, std::function<void(int status)> callback) = 0;
35
36 // Cancel all operations and remove fd tracking
37 virtual void remove(socket_t fd) = 0;
38};
39
40} // namespace network
Definition Proactor.hpp:8
virtual void async_accept(socket_t fd, std::function< void(socket_t new_fd, sockaddr_in addr)> callback)=0
virtual void run_once(int timeout_ms)=0
virtual void async_sendfile(socket_t out_fd, int in_fd, off_t offset, size_t count, std::function< void(ssize_t bytes_written)> callback)=0
virtual void remove(socket_t fd)=0
virtual void async_wait_write(socket_t fd, std::function< void()> callback)=0
virtual void async_read(socket_t fd, void *buffer, size_t size, std::function< void(ssize_t bytes_read)> callback)=0
virtual void async_write(socket_t fd, const void *buffer, size_t size, std::function< void(ssize_t bytes_written)> callback)=0
virtual void async_wait_read(socket_t fd, std::function< void()> callback)=0
virtual ~Proactor()=default
virtual void async_connect(socket_t fd, const sockaddr_in &addr, std::function< void(int status)> callback)=0
Definition ResponseWriter.hpp:7
int socket_t
Definition PlatformSocket.hpp:36
::ssize_t ssize_t
Definition PlatformSocket.hpp:41