-class rpc_const {
- public:
- static const unsigned int bind = 1; // handler number reserved for bind
- static const int timeout_failure = -1;
- static const int unmarshal_args_failure = -2;
- static const int unmarshal_reply_failure = -3;
- static const int atmostonce_failure = -4;
- static const int oldsrv_failure = -5;
- static const int bind_failure = -6;
- static const int cancel_failure = -7;
-};
+namespace rpc {
+ static constexpr milliseconds to_max{12000};
+ static constexpr milliseconds to_min{100};
+}
+
+template<class P, class R, class ...Args>
+struct is_valid_call : false_type {};
+
+template<class S, class R, class ...Args>
+struct is_valid_call<S(R &, Args...), R, Args...> : true_type {};
+
+template<class P, class F>
+struct is_valid_registration : false_type {};
+
+template<class S, class R, class ...Args>
+struct is_valid_registration<
+ S(R &, typename std::decay<Args>::type...),
+ S(R &, Args...)> : true_type {};
+
+template<class P, class C, class S, class R, class ...Args>
+struct is_valid_registration<
+ P,
+ S(C::*)(R &, Args...)> : is_valid_registration<P, S(R &, Args...)> {};