• Dominik Charousset's avatar
    Redesign serialization classes · 55153b94
    Dominik Charousset authored
    - Remove `data_processor`. This class unified serializer and
      deserializer interfaces to reduce code duplication. However, the
      implementation is quite complex and enforces virtual dispatch for all
      derived types.
    - Add `write_inspector` and `read_inspector` utility classes that inject
      an `operator()`. The previous recursive argument unrolling in the
      `data_processor` no longer has its place in C++17. The two new classes
      dispatch on `apply` member functions of their subtype via CRTP and use
      `if constexpr` to dispatch to the correct functions.
    - Refactor `serializer` and `deserializer` classes. These two classes
      still serve as base types for abstract inspectors, but no longer are
      connected through a common base.
    - Add `binary_serializer` and `binary_deserializer` classes. These two
      classes are the workhorses in CAF that run in performance-critical
      code. Hence, these implementations must reduce overhead as much as
      possible. Because of this, they do not inherit from the abstract
      interfaces and internally use the new `error_code` class over the
      generic `error` class.
    - Add handlers for `binary_serializer` and `binary_deserializer` to all
      CAF classes in addition to the generic versions.
    55153b94
http_broker.cpp 8.86 KB