This library allows the creation of custom shotover transforms.
There are two consumers of this library:
Custom Transforms
To create a custom transform you need to implement these traits:
- [
transforms::TransformConfig
] - Defines what configuration fields the transform has in thetopology.yaml
. - [
transforms::TransformBuilder
] - Defines how to build the Transform for a new incoming connection. Only one instance is created over shotovers runtime. - [
transforms::Transform
] - Defines the transformation logic of the transform. A new instance is created per incoming connection.
Simple transforms can implement all of these onto a single struct but generally you need seperate structs for each.
The shotover binary
All custom transforms the user wants to use are statically compiled into a single binary.
The crate for this binary is very simple, it just consists of a main.rs
like:
# mod transform_crate {
# pub type TransformConfig = shotover::transforms::null::NullSinkConfig;
# }
shotover::import_transform!(transform_crate::TransformConfig);
fn main() {
shotover::runner::Shotover::new().run_block();
}