11 breaking releases
0.12.0 | Jan 26, 2025 |
---|---|
0.10.0 | Nov 26, 2024 |
0.7.0 | Jul 25, 2024 |
0.3.0 | Jan 18, 2024 |
0.2.0 | Nov 27, 2023 |
#1834 in Network programming
1MB
30K
SLoC
Utilities for Aldrin server and client tests
This crate provides a simple way to quickly setup a complete Aldrin bus with a broker and multiple clients and is intended to be used in unit tests.
If you are using Tokio, it is strongly recommended to enable this crate's tokio
feature and
use the types in the tokio
module instead of the crate-level types.
Aldrin
Aldrin is a message bus for service-oriented RPC and general interprocess communication.
Aldrin busses are star-shaped: there is a cental component, called the broker, to which multiple clients can connect. These client can then publish services for other clients to use.
Services are described in a small DSL called Aldrin schema and are composed of functions and events. Schemata are then processed by a code generator, which can output both client and server-side code.
Here is a small toy example of an echo service:
service Echo {
uuid = 8920965f-110a-42ec-915c-2a65a3c47d1f;
version = 1;
fn echo @ 1 {
args = string;
ok = string;
err = enum {
EmptyString @ 1;
}
}
fn echo_all @ 2 {
args = string;
err = enum {
EmptyString @ 1;
}
}
event echoed_to_all @ 1 = string;
}
Crate organization
aldrin
: This is the main crate, aimed at writing both client and server applications.aldrin-broker
: Implements the broker-side of the protocol.aldrin-core
: Shared protocol primitives used byaldrin
andaldrin-broker
.aldrin-test
: Utilities for setting up unit tests of Aldrin services.aldrin-parser
: Parser library for Aldrin schemata.aldrin-codegen
: Implements client and server code generation from Aldrin schemata.aldrin-gen
: Standalone frontend to the parser and code generation.aldrin-macros
: Contains a macro for code generation at compile-time.
Dependencies
~1.2–7.5MB
~58K SLoC