Giter Site home page Giter Site logo

arindas / laminarmq-io Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 1.66 MB

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

Home Page: https://arindas.github.io/laminarmq-io/docs/laminarmq_io/

License: MIT License

Rust 100.00%
append-only async-io async-storage aws-s3 generic-associated-types

laminarmq-io's Introduction

laminarmq-io

An attempt to rewrite the laminarmq I/O layer to accommodate bounded memory overhead during read/write ops.

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 I/O related traits:

Trait Type Wrapper Implemented On
[AsyncRead] R I/O [AsyncBufRead] (struct BufferedReader*),
[AsyncRead] (struct [DirectReaderBufferedAppender])
[AsyncBufRead] R I/O -
[StreamRead] Streaming R I/O [AsyncRead] (struct [AsyncReadStreamer],
struct BufferedStreamReader*)
[AsyncAppend] W I/O [AsyncAppend] (struct *BufferedAppender)
[StreamAppend] Streaming W I/O [AsyncAppend] (trait impl)
[AsyncTruncate] W I/O -
[AsyncRemove] Management -
[AsyncClose]
Management

-

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 [AsyncReadStreamer] 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 / Append level as opposed to a unified Storage trait
  • All operations are exclusive with a &mut self receiver 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

License

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

laminarmq-io's People

Contributors

arindas avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.