25 lines
595 B
C++
25 lines
595 B
C++
#include "ProcedureManager.h"
|
|
|
|
ProcedureManager::ProcedureManager() {}
|
|
|
|
void ProcedureManager::handleCall(FILE *in, FILE *out) const {
|
|
ProcedureCallHeader header;
|
|
auto ptr = reinterpret_cast<byte*>(&header);
|
|
std::size_t sz = 0;
|
|
while (sz < sizeof(header))
|
|
sz += fread(ptr + sz, 1, sizeof(header) - sz, in);
|
|
|
|
auto buf = new byte[header.len];
|
|
sz = 0;
|
|
while (sz < header.len)
|
|
sz += fread(buf + sz, 1, header.len - sz, in);
|
|
|
|
BinaryBuffer bb(header.len, buf);
|
|
delete[] buf;
|
|
if (procedures.count(header.method)) {
|
|
auto res = procedures.at(header.method)(bb);
|
|
res.writeTo(out);
|
|
}
|
|
}
|
|
|