A blazingly fast and ultra small solution for message transfer from point A to point B
[todo] Explore the docs »
[todo] View Demo
·
Report Bug
·
Request Feature
Table of Contents
⚠️ If you are interested in this project, please contact me. I am not supporting it or working on it further at the moment, and it likely may not compile without some configuration first as I stopped working on it, mid-changes.
This project is not currently in development, but it's here for my own review or others to review as there were many fun techniques used to implement abstraction and maintain speed. It is not finished but I lost interest in continuing it further for now. It likely won't compile right away either. If you are interested in this project, feel free to contact me.
Rusty-Bridge is a program to build flexible data transformations and sending from point A to point B. It is built to be highly modular. It can be built to accept data from any source, and to send it to any destination. In between, it can be configured to work with all kinds of data transforms, message persistence, metrics viewing, configuration strategy, and more.
Rusty-Bridge can be built for almost any system. It runs with a tiny footprint and fast performance. It is designed to make adding connectivity between any two points, a breeze. Ballpark figures put the figures undder, Size: 10MB, RAM: under 12MB, CPU @ 200msg/s, ~1%. Of course, this is system dependent.
Rusty-Bridge is designed to be easy to get up and running
You will need these tools to compile Rusty-Bridge
- Rust
# https://www.rust-lang.org/tools/install curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
- Clone the repo
git clone https://github.com/RockyGitHub/rusty-bridge.git && cd rusty-bridge
- Run -- This currently won't work without specifying the feature flags, but I am pursuing reactivating the
dev
default featurescargo run # You can specify additional logs with an env var RUST_LOG=debug cargo run
- Build for release
cargo build --features="cloud-adapter/special-hivemq, data-source/dev, mini-config/dev" --release # Add the target if you are trying to compile for a different target architecture # ex: --target=armv7-unknown-linux-gnueabihf or --target=x86_64-pc-windows-gnu # See this page possible targets: https://doc.rust-lang.org/rustc/platform-support.html
- You can also use a pre-made script found in the tools directory
Rusty-Bridge is built out of many different libraries. This helps keep things manageable, resusable, and testable. The project uses what's known as a workspace. This means there are many projects within this one project. For example, Special-AnA is handled within one library, special-hivemq uses that library, and North-Adapters compiles in special-hivemq if the feature flag is selected.
A cool element to this is that testing and example code is extremely easy within each of these libraries. A few of them include an example binary that gives a brief view on how to use the library. It's particularly handy for quick tests and seeing how the code is to be used.
Rusty-Bridge supports providing real-time metrics about its activity. This is one of my favorite parts. See the docs here
Example of RTT (round trip time) for msgs:
Device reporting is also used, information will be sent containing system data on startup and thereafter dynamic data, such as memory available, processor use, etc, is sent. The intent is to serve a page in which all connected edges can be discovered. This page does not exist yet but in the tools directory, you can find a service to host a local endpoint. It can be used to test this feature.
Rusty-Bridge supports a multitude of configurations. The most commonly changed modules include the Data-Source, North-Adapter, Configuration, and the Transform. There are many other configurable options as well, please see these docs to review those.
When building with cargo build
you can specify the features to be built with it by passing the features flag. For example,
cargo build --features="data-source/mqtt, cloud-adapter/special-hivemq"
Every module has a dev
option that is used by default
data-source/<option>
cloud-adapter/<option>
msg-transforms/<option>
mini-config/<option>
Additional Feature flags
Rusty-Bridge/<option>
data-server
[default]none
Not implemented yet
msg-persistence/<option>
sled
Not implemented yet
Not implemented yet
(not currently in development)
- [Device Management]
- Persistence
- sled
- Alarm module
- Command and Control module
- Zero-Transform
- File Uploader
Don't see what you want? Suggest it!
See the open issues for a full list of proposed features (and known issues).
- todo
Christopher Davidoff - email
Thank you