summaryrefslogtreecommitdiff
path: root/modules/codec/c++/rpc.hpp
blob: 63ec014f67dce3bcc58796b544e7b32f2ebb6512 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#pragma once

namespace saw {
/**
 */
template<typename T, typename Iface>
class rpc_client {
		template<typename... IdT>
		struct request {
		private:
				std::tuple<id<IdT>...> ids_;
		public:
				error_or<data<schema::Tuple<IdT>...>> wait();
		};
		
		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(network& net);
};
}