#include #include #include #include #include #include #include #include #include #include #include TestConnector::TestConnector(NetHandler& hand) { handler = &hand; } std::expected TestConnector::Write(std::string reqNetPacket) { std::stringstream ss(reqNetPacket); // Read binary header std::string reqRawHeader; const int rhSize = rpcHeaderSize; reqRawHeader.resize(rhSize); ss.read(reqRawHeader.data(), rhSize); // Decode header RPCHeader reqHeader; reqHeader.Decode(reqRawHeader); // Read protobuf packet std::string reqData; auto pSize = reqHeader.PacketSize(); reqData.resize(pSize); ss.read(reqData.data(), pSize); // Call handler std::string resData; handler->Handle(reqData, resData); // Pack result std::string resNetPacket; RPCHeader resHeader(resData.size()); resNetPacket.append(resHeader.Encode()); resNetPacket.append(resData); backss << resNetPacket; auto size = backss.tellp(); return reqNetPacket.size(); } std::expected TestConnector::Read(std::string& resData, int size) { resData.resize(size); auto r = backss.readsome(resData.data(), size); return r; } TestConnector::~TestConnector() {}