An attempt to rewrite laminarmq
I/O layer
to accommodate capped/bounded memory overhead, both when reading and writing.
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 traits:
AsyncRead
AsyncBufRead
StreamRead
AsyncAppend
AsyncTruncate
StreamAppend
AsyncRemove
AsyncClose
On top of these traits, we aim to provide the following abstractions:
- Streaming read / append
- Buffered Reader
- Buffered Appender
- Direct Reader and Buffered Appender
- Buffered Reader and Direct Appender
- Buffered Reader and Buffered Appender
- Streaming Reader and Buffered Appender
This library acknowledges the fact that even simply reading may require mutation (such as advancing the filepointer) on different platforms. Hence all operations are exclusive. This library aims to remove the need for unnecessary internal locks in our I/O abstractions.
This generality allows us to abstract over local file system based storage as well as object storage (like AWS S3) with the same API.
This repository is licensed under the same terms as laminarmq
.
See LICENSE for more details.