mirror of
https://github.com/zeek/zeek.git
synced 2025-10-14 12:38:20 +00:00
Add facade types to avoid using raw Broker types
By avoiding to use `broker::data` directly, we gain a degree of freedom that allows us to swap out `broker::data` for something else (e.g., `broker::variant`) in the future. Furthermore, it also helps us to keep Broker types "local" to the Broker manager and gives us a nicer interface. Also replaces uses of `broker::expected` with `std::optional`. While an `expected `can carry additional information as to why a value is not present, nothing in Zeek ever cared about that. Hence, using `std::optional` removes an unnecessary dependency on a Broker detail while also being more efficient (no extra heap allocation when no value is present).
This commit is contained in:
parent
bc0f85caa8
commit
647fdf7737
30 changed files with 1091 additions and 552 deletions
|
@ -2,14 +2,15 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <broker/expected.hh>
|
||||
#include <cstdint>
|
||||
#include <memory>
|
||||
#include <optional>
|
||||
#include <vector>
|
||||
|
||||
namespace broker {
|
||||
class data;
|
||||
}
|
||||
namespace zeek {
|
||||
class BrokerData;
|
||||
class BrokerDataView;
|
||||
} // namespace zeek
|
||||
|
||||
namespace zeek::probabilistic::detail {
|
||||
|
||||
|
@ -89,8 +90,8 @@ public:
|
|||
*/
|
||||
bool Merge(CardinalityCounter* c);
|
||||
|
||||
broker::expected<broker::data> Serialize() const;
|
||||
static std::unique_ptr<CardinalityCounter> Unserialize(const broker::data& data);
|
||||
std::optional<BrokerData> Serialize() const;
|
||||
static std::unique_ptr<CardinalityCounter> Unserialize(BrokerDataView data);
|
||||
|
||||
protected:
|
||||
/**
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue