factor IPC out of server RPC
This commit is contained in:
+8
-10
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user