FastLED 3.9.15
Loading...
Searching...
No Matches

◆ get()

template<class Sig>
BindResult< Sig > fl::Rpc::get ( const char * name) const
inline

Get a registered method by name.

Returns BindResult containing typed callable, or error if not found or signature mismatch.

Definition at line 268 of file rpc.h.

268 {
269 fl::string key(name);
270 auto it = mRegistry.find(key);
271 if (it == mRegistry.end()) {
272 return BindResult<Sig>(fl::expected<RpcFn<Sig>, BindError>::failure(BindError::NotFound));
273 }
274 if (it->second.mTypeTag != detail::TypeTag<Sig>::id()) {
275 return BindResult<Sig>(fl::expected<RpcFn<Sig>, BindError>::failure(BindError::SignatureMismatch));
276 }
277 auto* holder = static_cast<detail::TypedCallableHolder<Sig>*>(
278 it->second.mTypedCallable.get());
279 if (!holder) {
280 return BindResult<Sig>(fl::expected<RpcFn<Sig>, BindError>::failure(BindError::NotFound));
281 }
282 return BindResult<Sig>(holder->mFn);
283 }
fl::unordered_map< fl::string, detail::RpcEntry > mRegistry
Definition rpc.h:387
fl::function< Sig > RpcFn
Definition rpc_handle.h:14
BindError
Definition rpc.h:100
@ SignatureMismatch
Definition rpc.h:102
static const void * id()

References fl::detail::TypeTag< Sig >::id(), mRegistry, fl::NotFound, and fl::SignatureMismatch.

+ Here is the call graph for this function: