Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: support for custom (de)serializer (#156)
* feat: support for custom (de)serializer This commit introduces the following changes to Zenoh-Flow: 1. types used within a Zenoh-Flow application do not have to implement the (cumbersome) `ZFData` trait; instead, 2. the types used must be `Send + Sync + 'static`, 3. an Output must know how to serialize the provided type `T` and, respectively, an Input must know how to deserialize bytes into `T`. With these changes, any SerDe compatible data serialization format is supported as well as, for instance, ProtoBuf. In terms of API, the major difference is how the Input and Output are obtained: ```rust input: inputs .take("in", |bytes| todo!("Provide your deserializer here")) .expect("No input called 'in' found"), output: outputs .take("out", |data| todo!("Provide your serializer here")) .expect("No output called 'out' found"), ``` * fix: move `DeserializerFn` in types/message.rs * fix: remove explicit call to `Arc::clone` * fix: add `as_mut_any` on `SendSyncAny` trait * fix: implement/derive Debug for the different messages * feat: InputBuilder and OutputBuilder Instead of having the methods `take` and `take_raw` on the Inputs and Outputs, that give, respectively, the Typed and Raw Input/Output, this commit removes the `take_raw` variant and introduces builders. The builders can be turned into the Typed or Raw variant using the corresponding methods: `build_typed` and `build_raw`. * doc: improve documentation of Input / Output * feat: reuse buffer when serializing (#160) * feat: reuse buffer when serializing This commit tries to minimize the number of allocations performed when serializing data. For this end, the connector and built-in Source now create internal `Vec<u8>` buffers that are reused whenever a message is serialized. This change should hopefully improve performance. * doc: fix typos * refacto: renamed `build_raw` and `build_typed` to `raw` and `typed` --------- Signed-off-by: Julien Loudet <[email protected]>
- Loading branch information