factor IPC out of server RPC

This commit is contained in:
Сергей Маринкевич
2025-12-03 18:27:08 +07:00
parent 00d359a064
commit 43f67275e2
6 changed files with 130 additions and 46 deletions
+8 -10
View File
@@ -2,6 +2,8 @@
#include "MyService.skeleton.h"
#include "ipc/IpcPipeChannel.h"
#include "ipc/IpcDispatcher.h"
#include "rpc/RpcInvoker.h"
#include <sys/stat.h>
@@ -14,17 +16,13 @@ int main() {
// Сервер читает из fifo_to_server и пишет в fifo_to_client.
IpcPipeChannel ch("/tmp/fifo_to_server", "/tmp/fifo_to_client");
// RPC‑уровень: скелет поверх того же канала.
// RPC‑уровень: инвокер и скелет, который лишь регистрирует методы.
RpcInvoker invoker;
MyService realObj;
MyServiceSkeleton skeleton(realObj);
MyServiceSkeleton skeleton(realObj, invoker);
while (true) {
IpcMessage req = ch.receive();
if (req.empty()) {
break;
}
IpcMessage resp = skeleton.dispatch(req);
ch.send(resp);
}
// IPC‑диспетчер, который декодирует IpcMessage в RPC-вызовы и обратно.
IpcDispatcher dispatcher(ch, invoker);
dispatcher.loop();
}