Program Listing for File commands.hpp
↰ Return to documentation for file (eshet/commands.hpp)
#pragma once
#include "actorpp/actor.hpp"
#include "data.hpp"
#include "msgpack.hpp"
namespace eshet {
namespace detail {
using namespace actorpp;
struct ActionCall {
std::string path;
Channel<Result> result_chan;
msgpack::object_handle args;
};
struct ActionRegister {
std::string path;
Channel<Result> result_chan;
Channel<Call> call_chan;
};
struct StateRegister {
std::string path;
Channel<Result> result_chan;
};
struct StateChanged {
std::string path;
Channel<Result> result_chan;
StateUpdate value;
};
struct StateObserve {
std::string path;
Channel<StateResult> result_chan;
Channel<StateUpdate> changed_chan;
};
struct EventRegister {
std::string path;
Channel<Result> result_chan;
};
struct EventEmit {
std::string path;
Channel<Result> result_chan;
msgpack::object_handle value;
};
struct EventListen {
std::string path;
Channel<Result> result_chan;
Channel<msgpack::object_handle> event_chan;
};
struct Get {
std::string path;
Channel<Result> result_chan;
};
struct Set {
std::string path;
Channel<Result> result_chan;
msgpack::object_handle value;
};
struct Ping {
Channel<Result> result_chan;
};
struct Disconnect {};
using Command =
std::variant<ActionCall, ActionRegister, StateRegister, StateChanged,
StateObserve, EventRegister, EventEmit, EventListen, Get, Set,
Ping, Disconnect>;
} // namespace detail
} // namespace eshet