/laminarmq-io

Generic I/O abstraction over local File storage and AWS S3 for laminarmq

Primary LanguageRustMIT LicenseMIT

laminarmq-io

rust-ci rustdoc

An attempt to rewrite laminarmq I/O layer to accommodate capped/bounded memory overhead, both when reading and writing.

Usage

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" }

Overview

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.

License

This repository is licensed under the same terms as laminarmq. See LICENSE for more details.