-
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