#include #include #include #include #include #include #include #include #include class TestHandler : public NetHandler { public: std::expected Handle(std::string& req, std::string& res) override; }; std::expected TestHandler::Handle(std::string& rawReq, std::string& rawRes) { control::HelloRequest pbReq; pbReq.ParseFromString(rawReq); std::cout << std::format("rpcName: {}\n", pbReq.meta().rpcname()); std::cout << std::format("req message: {}\n", pbReq.message()); control::HelloResult pbRes; pbRes.set_message("Johnny!"); auto resMeta = pbRes.mutable_meta(); resMeta->set_error(false); pbRes.SerializeToString(&rawRes); return {}; } int main(int argc, char** argv) { TestHandler handler; TestConnector connector(handler); RPCClient rpcCli(connector); control::HelloRequest pbReq; auto reqMeta = pbReq.mutable_meta(); reqMeta->set_rpcname("getHello"); pbReq.set_message("What's your name?"); control::HelloResult pbRes; auto trRes = rpcCli.DoTransaction(pbReq, pbRes); std::cout << std::format("res message: {}\n", pbRes.message()); }