- template<class F, class C=void> void reg(int proc, F f, C *c=nullptr);
+ template<class P, class F, class C=void> void reg(rpc_protocol::proc_t<P> proc, F f, C *c=nullptr) {
+ static_assert(is_valid_registration<P, F>::value, "RSM handler registered with incorrect argument types");
+ lock ml(rsm_mutex);
+ procs[proc.id] = marshalled_func<F>::wrap(f, c);
+ }