diff --git a/processor/pc/ProcedureManager.cpp b/processor/pc/ProcedureManager.cpp index e48456f..8d89dad 100644 --- a/processor/pc/ProcedureManager.cpp +++ b/processor/pc/ProcedureManager.cpp @@ -2,6 +2,17 @@ ProcedureManager::ProcedureManager() {} +struct ProcedureCallHeader { + uint64_t rd; + int32_t method; + uint32_t len; +}; + +struct ProcedureReturnHeader { + uint64_t rd; + uint32_t len; +}; + void ProcedureManager::handleCall(FILE *in, FILE *out) const { ProcedureCallHeader header; auto ptr = reinterpret_cast(&header); @@ -18,6 +29,10 @@ void ProcedureManager::handleCall(FILE *in, FILE *out) const { delete[] buf; if (procedures.count(header.method)) { auto res = procedures.at(header.method)(bb); + ProcedureReturnHeader rh; + rh.rd = header.rd; + rh.len = header.len; + fwrite(&rh, 1, sizeof(rh), out); res.writeTo(out); } } diff --git a/processor/pc/ProcedureManager.h b/processor/pc/ProcedureManager.h index db87424..29d194c 100644 --- a/processor/pc/ProcedureManager.h +++ b/processor/pc/ProcedureManager.h @@ -31,12 +31,6 @@ struct FuncArgTraits { using type = std::tuple; }; -struct ProcedureCallHeader { - uint64_t rd; - int32_t method; - uint32_t len; -}; - } class ProcedureManager {