#include "{{ cls.name }}.skeleton.h" {{ cls.name }}Skeleton::{{ cls.name }}Skeleton({{ cls.name }}& obj) { {% for m in cls.methods %} invoker.registerMethod(&obj, "{{ cls.name }}.{{ m.name }}", &{{ cls.name }}::{{ m.name }}); {% endfor %} } IpcMessage {{ cls.name }}Skeleton::dispatch(const IpcMessage& req) { // Перепаковываем IpcMessage в RpcArgs и вызываем type-erased инвокер. IpcMessage msg = req; // имя метода std::string method = msg.get(); // аргументы (PoC: только int, читаем все до конца сообщения) RpcArgs args; while (!msg.empty()) { int v = msg.get(); args.emplace_back(RpcValue::fromInt(v)); } RpcValue result = invoker.dispatch(method, args); IpcMessage resp; resp.add(result.asInt()); // PoC: только int return resp; }