rename RpcClient to ProxyMarshaller
This commit is contained in:
@@ -29,7 +29,7 @@ project/
|
|||||||
│ ├── IpcMessage.h # типизированное IPC‑сообщение (add<T>/get<T>)
|
│ ├── IpcMessage.h # типизированное IPC‑сообщение (add<T>/get<T>)
|
||||||
│ ├── IpcPipeChannel.h# реализация RpcChannel поверх FIFO
|
│ ├── IpcPipeChannel.h# реализация RpcChannel поверх FIFO
|
||||||
│ ├── RpcChannel.h # абстрактный канал для RPC
|
│ ├── RpcChannel.h # абстрактный канал для RPC
|
||||||
│ ├── RpcClient.h # клиентское ядро RPC (call<Ret>(method, args...))
|
│ ├── ProxyMarshaller.h # клиентское ядро RPC (call<Ret>(method, args...))
|
||||||
│ └── RpcInvoker.h # серверное ядро RPC (dispatch)
|
│ └── RpcInvoker.h # серверное ядро RPC (dispatch)
|
||||||
├── tools
|
├── tools
|
||||||
│ ├── generate_rpc.py
|
│ ├── generate_rpc.py
|
||||||
@@ -53,10 +53,10 @@ project/
|
|||||||
* `IpcChannel` — абстракция транспорта: `send(const IpcMessage&)`, `receive() -> IpcMessage`.
|
* `IpcChannel` — абстракция транспорта: `send(const IpcMessage&)`, `receive() -> IpcMessage`.
|
||||||
* `IpcPipeChannel` — реализация поверх двух FIFO (`/tmp/fifo_to_server`, `/tmp/fifo_to_client`), которая внутри работает со строками, но наружу — только с `IpcMessage`.
|
* `IpcPipeChannel` — реализация поверх двух FIFO (`/tmp/fifo_to_server`, `/tmp/fifo_to_client`), которая внутри работает со строками, но наружу — только с `IpcMessage`.
|
||||||
* **Уровень RPC-ядра**:
|
* **Уровень RPC-ядра**:
|
||||||
* `RpcClient` — собирает `IpcMessage` из имени метода и аргументов, отправляет через `RpcChannel` и читает ответ.
|
* `ProxyMarshaller` — собирает `IpcMessage` из имени метода и аргументов, отправляет через `RpcChannel` и читает ответ.
|
||||||
* `RpcInvoker` — по имени метода (первое поле сообщения) находит зарегистрированную функцию-член и вызывает её, читая аргументы через `get<T>()`.
|
* `RpcInvoker` — по имени метода (первое поле сообщения) находит зарегистрированную функцию-член и вызывает её, читая аргументы через `get<T>()`.
|
||||||
* **Сгенерированные обёртки**:
|
* **Сгенерированные обёртки**:
|
||||||
* `*.proxy.*` — используют `RpcClient` и `RpcChannel`, не зависят от конкретного транспорта.
|
* `*.proxy.*` — используют `ProxyMarshaller` и `RpcChannel`, не зависят от конкретного транспорта.
|
||||||
* `*.skeleton.*` — используют `RpcInvoker` и принимают/возвращают `IpcMessage` для диспетчеризации вызовов.
|
* `*.skeleton.*` — используют `RpcInvoker` и принимают/возвращают `IpcMessage` для диспетчеризации вызовов.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
#include "IpcChannel.h"
|
#include "IpcChannel.h"
|
||||||
|
|
||||||
class RpcClient {
|
class ProxyMarshaller {
|
||||||
public:
|
public:
|
||||||
explicit RpcClient(IpcChannel& ch) : channel(ch) {}
|
explicit ProxyMarshaller(IpcChannel& ch) : channel(ch) {}
|
||||||
|
|
||||||
template<typename Ret, typename... Args>
|
template<typename Ret, typename... Args>
|
||||||
Ret call(const std::string& method, const Args&... args) {
|
Ret call(const std::string& method, const Args&... args) {
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
#include "{{ cls.name }}.proxy.h"
|
#include "{{ cls.name }}.proxy.h"
|
||||||
#include "rpc/RpcClient.h"
|
#include "rpc/ProxyMarshaller.h"
|
||||||
|
|
||||||
class {{ cls.name }}Proxy::Impl {
|
class {{ cls.name }}Proxy::Impl {
|
||||||
public:
|
public:
|
||||||
explicit Impl(IpcChannel& ch)
|
explicit Impl(IpcChannel& ch)
|
||||||
: client(ch) {}
|
: client(ch) {}
|
||||||
|
|
||||||
RpcClient client;
|
ProxyMarshaller client;
|
||||||
};
|
};
|
||||||
|
|
||||||
{{ cls.name }}Proxy::{{ cls.name }}Proxy(IpcChannel& ch)
|
{{ cls.name }}Proxy::{{ cls.name }}Proxy(IpcChannel& ch)
|
||||||
|
|||||||
Reference in New Issue
Block a user