#pragma once #include #include #include // Инвокер — тонкий фасад над RpcRegistry: // по ObjectId находит объект и делегирует вызов его IRpcObject::invoke(). class RpcInvoker { public: using ObjectId = RpcRegistry::ObjectId; // согласован с IpcCodec::ObjectId explicit RpcInvoker(RpcRegistry& registry) : registry_(registry) {} RpcValue dispatch(ObjectId objectId, const std::string& method, const RpcArgs& args) const { IRpcObject* obj = registry_.get(objectId); if (!obj) { // PoC: в случае ошибки возвращаем 0. return RpcValue::fromInt(0); } return obj->invoke(method, args); } private: RpcRegistry& registry_; };