Files
integration/luprex/core/cpp/invocation.hpp

58 lines
1.4 KiB
C++
Raw Normal View History

#ifndef INVOCATION_HPP
#define INVOCATION_HPP
#include <string>
#include <map>
#include <deque>
#include "streambuffer.hpp"
class InvocationData : public std::map<std::string, std::string> {
public:
2021-10-15 14:47:12 -04:00
const std::string &get(const std::string &key) const;
void serialize(StreamBuffer *sb) const;
void deserialize(StreamBuffer *sb);
};
class Invocation {
public:
enum Kind {
KIND_INVALID,
KIND_PLAN,
2021-10-15 14:47:12 -04:00
KIND_LUA,
KIND_FLUSH_PRINTS,
2021-11-26 15:45:36 -05:00
KIND_TICK,
2021-12-15 14:18:19 -05:00
KIND_LUA_SOURCE,
};
private:
Kind kind_;
int64_t actor_;
int64_t place_;
std::string action_;
InvocationData data_;
public:
Invocation();
Invocation(Kind kind, int64_t actor, int64_t place, const std::string &action, const InvocationData &data);
2021-11-16 12:20:11 -05:00
Invocation(Kind kind, int64_t actor, int64_t place, const std::string &action);
bool valid() const { return kind_ != KIND_INVALID; }
Kind kind() const { return kind_; }
int64_t actor() const { return actor_; }
int64_t place() const { return place_; }
const std::string &action() const { return action_; }
const InvocationData &data() const { return data_; }
void serialize(StreamBuffer *sb) const;
void deserialize(StreamBuffer *sb);
2021-11-11 16:23:11 -05:00
std::string debug_string();
};
class InvocationQueue : public std::deque<Invocation> {
};
#endif // INVOCATION_HPP