Program Listing for File register_cmd_parser.hpp
↰ Return to documentation for file (register_cmd_parser.hpp)
#ifndef REGISTER_CMD_PARSER_H_
#define REGISTER_CMD_PARSER_H_
#include <cstdint>
#include <string>
#include <vector>
#include "simdjson.h"
#include "felix/felix_client_thread.hpp"
struct Command {
std::string uuid;
FelixClientThread::Cmd cmd;
std::vector<std::string> cmd_args;
};
struct ReqData {
int status_code{FelixClientThread::OK};
std::string status_message{"Ok"};
std::string uuid{""};
FelixClientThread::Cmd cmd{FelixClientThread::Cmd::UNKNOWN};
std::string resource_name{""};
std::string value{""};
};
class RegisterMsgParser
{
public:
std::vector<ReqData> parse_commands(const char* msg, size_t len);
std::vector<ReqData> parse_commands(const std::string& cmd);
std::string encode_replies(uint64_t fid, const std::vector<ReqData>& cmds);
std::vector<FelixClientThread::Reply> decode_replies(const std::string & r);
std::string encode_commands(const std::vector<Command>& cmds);
private:
simdjson::dom::parser parser;
void parse_cmd_args(ReqData& msg, simdjson::dom::array& arr);
};
#endif /* REGISTER_CMD_PARSER_H_ */