-
Notifications
You must be signed in to change notification settings - Fork 20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: support for custom (de)serializer #156
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
First pass, overall LGTM, a few comments, and the Debug
is important for us to be used in logging, otherwise, we may never be able to understand what it is going on.
I need to give a more deep pass on it,
I'm thinking if Not really sure how this would translate to code. |
Maybe a trait is not needed, the builder pattern could be enough: That's what you had in mind? |
Yep, just because of the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, modulo the discussion on the builder for the inputs/outputs.
This depends on: #158 |
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"), ```
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`.
b86debf
to
253a8f0
Compare
* 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
Signed-off-by: Julien Loudet <[email protected]>
This commit introduces the following changes to Zenoh-Flow:
(cumbersome)
ZFData
trait; instead,Send + Sync + 'static
,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: