Plugins
Covers Engine Plugin SDK 2.0.0 · Interface Plugin SDK 0.2.0
EngineProtocol
Typed application contract over Peer.
API
Typed application contract over Peer. No application storage is allocated. Commands wait; telemetry is best effort.
Namespace: DARTWIC.
#include <dartwic/EngineProtocol.h>Declaration
class EngineProtocol {
public:
explicit EngineProtocol(TEMPEST::Peer &peer);
~EngineProtocol();
EngineProtocol(const EngineProtocol &) = delete;
EngineProtocol &operator=(const EngineProtocol &) = delete;
class Channels {
public:
void upsert(std::string channel, ChannelFields fields) const;
void upsert(ChannelChanges changes) const;
void upsert(ChannelUpsertRequest request) const;
void remove(std::string channel) const;
void remove(ChannelRemoveRequest request) const;
ChannelQueryResult query(ChannelQuery request = {}) const;
ChannelQueryResult query(std::initializer_list<std::string> channels) const;
void publishChannelTelemetry(ChannelUpdate update) const;
void publishChannelTelemetry(ChannelUpdates updates) const;
void publishSnapshotTelemetry(ChannelSnapshot snapshot) const;
void setHandlers(ChannelHandlers handlers) const;
};
class Argus {
public:
std::string publishEventTelemetry(ArgusEvent event) const;
void publishSnapshotTelemetry(ArgusBoardSnapshot snapshot) const;
ArgusQueryResult query(ArgusQuery request = {}) const;
ArgusActionResult updateStatus(std::string event_id,
std::string status) const;
ArgusActionResult respondToPrompt(std::string event_id,
Value::Object response) const;
ArgusActionResult releaseHold(std::string event_id,
Value::Object response = {}) const;
ArgusActionResult remove(std::string event_id) const;
void setHandlers(ArgusHandlers handlers) const;
};
class Logs {
public:
std::vector<LogEntry> query(LogQuery request = {}) const;
std::vector<LogStream> list() const;
void publishLogTelemetry(LogEntry entry) const;
void publishLogTelemetry(std::vector<LogEntry> entries) const;
void setHandlers(LogHandlers handlers) const;
};
Channels &channels();
const Channels &channels() const;
Argus &argus();
const Argus &argus() const;
Logs &logs();
const Logs &logs() const;
};