20#include <parcel/parcel.h>
26 static_assert(std::derived_from<T, parcel::ICell>,
27 "EventBuilder<T>: T must derive from conduit::Event<T, Name>");
50 core_.
metadata.insert_or_assign(std::move(key), std::move(value));
60 created_at_set_ =
true;
66 core_.
flags.template insert<F>();
70 template <
typename... Fs>
72 (core_.
flags.template insert<Fs>(), ...);
78 core_.
id = ulid::generate();
80 if (!created_at_set_) {
83 auto payload_cell = std::make_shared<T>(std::move(payload_));
84 return EventEnvelope(std::move(core_), parcel::cell_t{std::move(payload_cell)});
95 bool created_at_set_ =
false;
103template <
typename T,
typename... Args>
Definition builder.hpp:25
EventBuilder & flag()
Definition builder.hpp:65
EventBuilder(T payload)
Definition builder.hpp:30
EventBuilder & flags()
Definition builder.hpp:71
EventBuilder & id(const ulid::Ulid value)
Definition builder.hpp:34
EventBuilder & metadata(std::string key, md::Value value)
Definition builder.hpp:49
EventBuilder & causation_id(ulid::Ulid value)
Definition builder.hpp:44
EventEnvelope build()
Definition builder.hpp:76
EventBuilder & created_at(const std::chrono::system_clock::time_point tp)
Definition builder.hpp:58
EventBuilder & correlation_id(ulid::Ulid value)
Definition builder.hpp:40
EventBuilder & metadata(Metadata md)
Definition builder.hpp:53
Polymorphic envelope cell.
Definition envelope.hpp:62
EventEnvelope — a parcel cell carrying conduit's envelope metadata plus a polymorphic payload cell.
Event<Self, Name> library base built on parcel::SelfStructCell.
Conduit flag tags, built atop comms::Flag / comms::FlagSet.
flags::FlagSet collect_default_flags()
Definition event.hpp:86
Definition builder.hpp:22
EventBuilder< T > make_event(Args &&... args)
Definition builder.hpp:104
md::Metadata Metadata
Envelope metadata: a typed JSON-shaped key/value tree.
Definition metadata.hpp:20
EventBuilder< T > event(T payload)
Definition builder.hpp:99
std::chrono::system_clock::time_point created_at
Definition metadata.hpp:24
Internal core shared between envelope copies — accessors return references into this struct so transp...
Definition envelope.hpp:32
std::optional< ulid::Ulid > correlation_id
Definition envelope.hpp:37
std::optional< ulid::Ulid > causation_id
Definition envelope.hpp:38
ulid::Ulid id
Definition envelope.hpp:33
flags::FlagSet flags
Definition envelope.hpp:34
Metadata metadata
Definition envelope.hpp:35
Timestamps timestamps
Definition envelope.hpp:36