created_at2023-01-23 21:47:39.100199
updated_at2024-02-21 11:49:09.910462
descriptionConcurrent I/O resource management using reactor pattern
Alexis Sellier (cloudhead)



# I/O reactor ![Build]( ![Tests]( ![Lints]( [![codecov](]( [![](]( [![Docs](]( [![Apache-2 licensed](](./LICENSE) ### _Concurrent I/O without rust async problems_ This repository provides a set of libraries for concurrent access to I/O resources (file, network, devices etc) which uses reactor pattern with pluggable `poll` syscall engines. This allows to handle situations like multiple network connections within the scope of a single thread (see [C10k problem]). The crate can be used for building concurrent microservice architectures without polling all APIs with `async`s. The reactor design pattern is an event handling pattern for handling service requests delivered concurrently to a service handler by one or more inputs. The service handler then demultiplexes the incoming requests and dispatches them synchronously to the associated service[^1]. Core concepts: - **Resource**: any resource that can provide input to or consume output from the system. - **Runtime**: runs an event loop to block on all resources. Sends the resource service when it is possible to start a synchronous operation on a resource without blocking (Example: a synchronous call to read() will block if there is no data to read. - **Service**: custom business logic provided by the application for a given set of resources. Service exposes a **Handler API** for the reactor *runtime*. It is also rsponsible for the creation and destruction of the resources. ## Documentation API reference documentation for the library can be accessed at . ## Licensing The libraries are distributed on the terms of Apache 2.0 opensource license. See [LICENCE](LICENSE) file for the license details. [C10k problem]: [^1]: Schmidt, Douglas et al. Pattern-Oriented Software Architecture Volume 2: Patterns for Concurrent and Networked Objects. Volume 2. Wiley, 2000.
Commit count: 109

cargo fmt