rename RpcClient to ProxyMarshaller

master
Сергей Маринкевич 2 months ago
parent 7495f540d2
commit 4433568545

@ -29,7 +29,7 @@ project/
│   ├── IpcMessage.h # типизированное IPCсообщение (add<T>/get<T>)
│   ├── IpcPipeChannel.h# реализация RpcChannel поверх FIFO
│   ├── RpcChannel.h # абстрактный канал для RPC
│   ├── RpcClient.h # клиентское ядро RPC (call<Ret>(method, args...))
│   ├── ProxyMarshaller.h # клиентское ядро RPC (call<Ret>(method, args...))
│   └── RpcInvoker.h # серверное ядро RPC (dispatch)
├── tools
│ ├── generate_rpc.py
@ -53,10 +53,10 @@ project/
* `IpcChannel` — абстракция транспорта: `send(const IpcMessage&)`, `receive() -> IpcMessage`.
* `IpcPipeChannel` — реализация поверх двух FIFO (`/tmp/fifo_to_server`, `/tmp/fifo_to_client`), которая внутри работает со строками, но наружу — только с `IpcMessage`.
* **Уровень RPC-ядра**:
* `RpcClient` — собирает `IpcMessage` из имени метода и аргументов, отправляет через `RpcChannel` и читает ответ.
* `ProxyMarshaller` — собирает `IpcMessage` из имени метода и аргументов, отправляет через `RpcChannel` и читает ответ.
* `RpcInvoker` — по имени метода (первое поле сообщения) находит зарегистрированную функцию-член и вызывает её, читая аргументы через `get<T>()`.
* **Сгенерированные обёртки**:
* `*.proxy.*` — используют `RpcClient` и `RpcChannel`, не зависят от конкретного транспорта.
* `*.proxy.*` — используют `ProxyMarshaller` и `RpcChannel`, не зависят от конкретного транспорта.
* `*.skeleton.*` — используют `RpcInvoker` и принимают/возвращают `IpcMessage` для диспетчеризации вызовов.
---

@ -2,9 +2,9 @@
#include "IpcChannel.h"
class RpcClient {
class ProxyMarshaller {
public:
explicit RpcClient(IpcChannel& ch) : channel(ch) {}
explicit ProxyMarshaller(IpcChannel& ch) : channel(ch) {}
template<typename Ret, typename... Args>
Ret call(const std::string& method, const Args&... args) {

@ -1,12 +1,12 @@
#include "{{ cls.name }}.proxy.h"
#include "rpc/RpcClient.h"
#include "rpc/ProxyMarshaller.h"
class {{ cls.name }}Proxy::Impl {
public:
explicit Impl(IpcChannel& ch)
: client(ch) {}
RpcClient client;
ProxyMarshaller client;
};
{{ cls.name }}Proxy::{{ cls.name }}Proxy(IpcChannel& ch)

Loading…
Cancel
Save