Я начал писать свой новый RPC и у меня появилось 2 новых для себя задумки: 1. Использование объектов (каждая функция находится в объекте и может получить к нему доступ) 2. Использовать libffi closure чтобы вызывать функции RPC 99% нативно (99% потому что необходимо использовать rpc_struct_t вместо обычных структур хотя в теории это можно обойти через создание структур через libffi, стоит ли это делать?). Т.Е. чтобы вызвать функцию надо получить с сервера объект(сервер выдаст объект с таким же ID как и у полноценного объекта в котором находится функция, но единственными полями там будут rpc_function_t, в этом типе данных будет храниться прототип функции, ее возвращаемый тип и указатель на вызываемую функцию. После того как сервер вернул объект и он был получен клиентом, клиент генерирует closure для каждой функции в объекте и записывает ее в void* fn_ptr в rpc_function_t и отдает готовый объект пользователю. Получается примерно вот такой код как вызвать функцию с клиента (пока что это все псевдокод кроме rpc_struct_t)
rpc_struct_t retrievd_obj = rpc_client_get_object(client, "obj test");
rpc_function_t fn = NULL;
rpc_struct_get(retrievd_obj, "func123",fn);
int (*test)(int, char*) = rpc_function_get_fnptr(fn);
int ret = test(1, "123");
Как вы считаете нужно ли развивать RPC в этом направлении или использовать специализированный вызов функции например через rpc_client_call?