libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
pipelineevent.h
Go to the documentation of this file.
1
8#pragma once
9
10
11#include <promeki/config.h>
12#if PROMEKI_ENABLE_PROAV
13#include <promeki/namespace.h>
14#include <promeki/error.h>
15#include <promeki/json.h>
16#include <promeki/list.h>
17#include <promeki/metadata.h>
18#include <promeki/sharedptr.h>
19#include <promeki/string.h>
20#include <promeki/timestamp.h>
21#include <promeki/variant.h>
22
23PROMEKI_NAMESPACE_BEGIN
24
91class PipelineEvent {
92 PROMEKI_SHARED_FINAL(PipelineEvent)
93 public:
95 using Ptr = SharedPtr<PipelineEvent>;
96
98 using List = ::promeki::List<PipelineEvent>;
99
101 using PtrList = ::promeki::List<Ptr>;
102
107 enum class Kind {
108 StateChanged,
109 StageState,
110 StageError,
111 StatsUpdated,
112 PlanResolved,
113 Log,
114 TransportStateChanged
115 };
116
118 PipelineEvent() = default;
119
120 // ------------------------------------------------------------
121 // Field accessors
122 // ------------------------------------------------------------
123
125 Kind kind() const { return _kind; }
126
128 const String &stageName() const { return _stageName; }
129
138 const Variant &payload() const { return _payload; }
139
148 const JsonObject &jsonPayload() const { return _jsonPayload; }
149
151 const Metadata &metadata() const { return _metadata; }
152
154 const TimeStamp &timestamp() const { return _ts; }
155
156 // ------------------------------------------------------------
157 // Field mutators
158 // ------------------------------------------------------------
159
161 void setKind(Kind k) { _kind = k; }
162
164 void setStageName(const String &s) { _stageName = s; }
165
167 void setPayload(const Variant &v) { _payload = v; }
168
170 void setJsonPayload(const JsonObject &j) { _jsonPayload = j; }
171
173 void setMetadata(const Metadata &m) { _metadata = m; }
174
176 void setTimestamp(const TimeStamp &t) { _ts = t; }
177
178 // ------------------------------------------------------------
179 // Serialization
180 // ------------------------------------------------------------
181
199 JsonObject toJson() const;
200
212 static PipelineEvent fromJson(const JsonObject &obj, Error *err = nullptr);
213
220 static String kindToString(Kind k);
221
230 static Kind kindFromString(const String &s, bool *ok = nullptr);
231
232 private:
233 Kind _kind = Kind::StateChanged;
234 String _stageName;
235 Variant _payload;
236 JsonObject _jsonPayload;
237 Metadata _metadata;
238 TimeStamp _ts;
239};
240
241PROMEKI_NAMESPACE_END
242
243#endif // PROMEKI_ENABLE_PROAV