Files
stvpn/testconnect.cpp
T
2026-04-29 11:54:21 +02:00

57 lines
1.5 KiB
C++

#include <cstring>
#include <expected>
#include <iostream>
#include <span>
#include <sstream>
#include <string>
#include <vector>
#include <memory>
#include <testconnect.hpp>
#include <nethandler.hpp>
#include <rpcheader.hpp>
TestConnector::TestConnector(NetHandler& hand) {
handler = &hand;
}
std::expected<int, std::string> 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<int, std::string> TestConnector::Read(std::string& resData, int size) {
resData.resize(size);
auto r = backss.readsome(resData.data(), size);
return r;
}
TestConnector::~TestConnector() {}