An attempt to rewrite the laminarmq I/O layer
to accommodate bounded memory overhead during read/write ops.
laminarmq-io is a library crate. In order to use it, add the following to your Cargo.toml
[dependencies]
laminarmq-io = { git = "https://github.com/arindas/laminarmq-io.git" }This crate provides the following I/O related traits:
The "Wrapper Implemented on" column denotes on which underlying trait, the current trait has an impl with the help of a wrapper struct wrapping the mentioned trait. For example, [
StreamRead] is implemented by a wrapper struct [AsyncReadStreamRead] which wraps an [AsyncRead] instance.Some traits in this table also have direct impls on other trait types e.g:
impl<T> StreamAppend for T where T: AsyncAppend { /* ... */ }They are marked with (trait impl).
This library makes the following improvements over existing I/O primitives in laminarmq:
- Provides traits at individual operaton level i.e
Read/Appendlevel as opposed to a unifiedStoragetrait - All operations are exclusive with a
&mut selfreceiver to avoid internal locks - Supports both streaming read and streaming write operations
- Provides impls on both filessytem based APIs and cloud object storage APIs such as S3
This repository is licensed under the same terms as laminarmq.
See LICENSE for more details.