Skip to content
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

Merged
merged 9 commits into from
May 2, 2023

Commits on Apr 28, 2023

  1. 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"),
    ```
    J-Loudet committed Apr 28, 2023
    Configuration menu
    Copy the full SHA
    3a832a6 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    efec7ae View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    80bee0d View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    61cf6e5 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    25943b4 View commit details
    Browse the repository at this point in the history
  6. 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`.
    J-Loudet committed Apr 28, 2023
    Configuration menu
    Copy the full SHA
    f238d72 View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    253a8f0 View commit details
    Browse the repository at this point in the history
  8. 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
    J-Loudet committed Apr 28, 2023
    Configuration menu
    Copy the full SHA
    b6c669c View commit details
    Browse the repository at this point in the history

Commits on May 2, 2023

  1. refacto: renamed build_raw and build_typed to raw and typed

    Signed-off-by: Julien Loudet <[email protected]>
    J-Loudet committed May 2, 2023
    Configuration menu
    Copy the full SHA
    f9743d3 View commit details
    Browse the repository at this point in the history