diff options
Diffstat (limited to 'modules/codec')
-rw-r--r-- | modules/codec/c++/rpc.hpp | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/modules/codec/c++/rpc.hpp b/modules/codec/c++/rpc.hpp index e275102..e920a10 100644 --- a/modules/codec/c++/rpc.hpp +++ b/modules/codec/c++/rpc.hpp @@ -1,29 +1,34 @@ #pragma once namespace saw { -template<typename T> -class remote { - static_assert(always_false<T>, "Type of remote not supported"); - - template<typename Iface> - rpc_client<T,Iface> connect(); -}; - +/** + */ template<typename T, typename Iface> class rpc_client { - template<typename... T> + template<typename... IdT> struct request { private: - std::tuple<id<T>...> ids_; + std::tuple<id<IdT>...> ids_; public: - error_or<data<schema::Tuple<T>...>> wait(); + error_or<data<schema::Tuple<IdT>...>> wait(); }; - template<typename... T> - request<T...> request_data(id<T>... data); + template<typename... IdT> + request<IdT...> request_data(id<IdT>... data); }; template<typename T, typename Iface> class rpc_server { }; + +template<typename T> +class remote { + static_assert(always_false<T>, "Type of remote not supported"); + + template<typename Iface> + rpc_client<T,Iface> connect(); + + template<typename Iface> + rpc_server<T,Iface> listen(); +}; } |