1 #ifndef GRAIL_SNAPSHOT_GENERATOR_H
2 #define GRAIL_SNAPSHOT_GENERATOR_H
4 #include "IDebugSnapshotReceiver.h"
5 #include "ISnapshotGenerator.h"
13 template<
typename SnapshotType>
27 if (receiver ==
nullptr)
29 snapshotReceivers.push_back(receiver);
35 snapshotReceivers.erase(std::remove(snapshotReceivers.begin(), snapshotReceivers.end(), receiver));
41 SnapshotType snapshot;
42 if(TryProduceSnapshot(snapshot))
44 snapshot.absoluteTime = timestampProvider !=
nullptr ? timestampProvider->GetTimestamp() : 0.0f;
45 for(
auto receiver : snapshotReceivers)
47 PassSnapshotToReceiver(*receiver, snapshot);
52 void SetTimestampProvider(
const std::shared_ptr<ITimestampProvider>& provider)
override
54 timestampProvider = provider;
58 virtual bool TryProduceSnapshot(SnapshotType& outSnapshot) = 0;
59 virtual void PassSnapshotToReceiver(IDebugSnapshotReceiver& receiver, SnapshotType& snapshot) = 0;
62 std::vector<IDebugSnapshotReceiver*> snapshotReceivers{};
63 std::shared_ptr<ITimestampProvider> timestampProvider =
nullptr;
Definition: IDebugSnapshotReceiver.h:7
Definition: ISnapshotGenerator.h:12
Definition: SnapshotGenerator.h:15
void AddReceiver(IDebugSnapshotReceiver *receiver) override
Registers a receiver for newly created debug snapshots.
Definition: SnapshotGenerator.h:25
void RemoveReceiver(IDebugSnapshotReceiver *receiver) override
Removes a snapshot receiver.
Definition: SnapshotGenerator.h:33
void ProduceSnapshot() override
Produces a debug snapshot and sends it to all registered receivers.
Definition: SnapshotGenerator.h:39