Mean and lean components for working with ultralight persistent data channels in rust. Channels could be used for communication, transaction journaling, live replication of an application state or as a backend for persisting software system images.
- A mechanism to sequentially persist data at a very fast rate
- They are writer bound - it is a writer which creates them and specify the particular structure of a channel such size, maximum record length, or timeout
- They have a fixed predefined capacity.
- Once a channel is closed, is full, or is abandoned it will never be used again for writing.
- They are byte-oriented sinks.
- They are backed by a file; using a RAM disk for storage such as tempfs or /dev/shm could provide blazing fast speeds.
- They always use little endian byte order.
- Writers are components which push data into a persistent channel. For each channel there is only one writer.
- Write operation can be done in stages using a chain of handlers.
- Readers are components which poll data from a channel. Data available in the channel could be consumed multiple times, sequential or in parallel by multiple readers.
- The default implementations for both readers and writers are non-blocking.
- Readers also offer a straight
Iterator
API.
Add this to your Cargo.toml
:
[dependencies]
kekbit = "0.3.4"
See the Examples for detailed usage.
The minimum supported Rust version is 1.31. Any change to this is considered a breaking change.
Licensed under MIT license (LICENSE or http://opensource.org/licenses/MIT)
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, shall be licensed as above, without any additional terms or conditions.