Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/maikel/senders-io
An adaption of Senders/Receivers for async networking and I/O
https://github.com/maikel/senders-io
Last synced: about 1 month ago
JSON representation
An adaption of Senders/Receivers for async networking and I/O
- Host: GitHub
- URL: https://github.com/maikel/senders-io
- Owner: maikel
- License: apache-2.0
- Created: 2023-05-25T07:39:13.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-08-20T14:53:08.000Z (4 months ago)
- Last Synced: 2024-08-20T18:05:05.123Z (4 months ago)
- Language: C++
- Size: 381 KB
- Stars: 14
- Watchers: 3
- Forks: 2
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# senders-io
An adaption of Senders/Receivers for async networking and I/OThis repository is still very experimental and in development. It's goal is to create abstractions for file and networking i/o using stdexec as a model for asynchronous operations.
The basic principles are:
- We use an `async_resource` concept to asynchronously create and asynchronously release a resource
- such a resource is usable via some copyable, non-owning token such as a `file_handle` or `socket_handle`
- examples are files, sockets, schedulers, memory ...
- We use *sequence-senders* for operations that could potentially complete multiple times
- completion are either sequential or in parallel
- examples are read and write operations, resolving hostnames or accepting new connections# How to build this project
This repository builds ontop of a specific branch of stdexec, namely the `member-only-customization-points`.
(see https://github.com/NVIDIA/stdexec/pull/788)Therefore you have to checkout the correct branch and install it such that CMake can find it.
To install stdexec in some `` folder do something along the lines
```
$ git clone [email protected]:villevoutilainen/wg21_p2300_std_execution.git stdexec
$ git -w stdexec checkout member-only-customization-points
$ cmake -S stdexec -B stdexec-build -DCMAKE_INSTALL_PREFIX=""
$ cmake --install stdexec-build
```
After having installed stdexec, you can specify the `` folder to CMake via the `stdexec_DIR` variable as in```
$ cmake -S senders-io -B senders-io-build -Dstdexec_DIR=/lib/cmake/stdexec
```This project has been tested with gcc-11 and clang-16.
# Documentation
## Sequence Senders
## `async_resource`
## `byte_stream` / `seekable_byte_stream`
## `file_handle`
## `io_scheduler`
## `socket_handle`
## `net_scheduler`