FastLED 3.10.8
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 279 of file rpc.h.

279 {
280 fl::string key(name);
281 auto it = mRegistry.find(key);
282 if (it == mRegistry.end()) {
283 return BindResult<Sig>(fl::expected<RpcFn<Sig>, BindError>::failure(BindError::NotFound));
284 }
285 if (it->second.mTypeTag != detail::TypeTag<Sig>::id()) {
286 return BindResult<Sig>(fl::expected<RpcFn<Sig>, BindError>::failure(BindError::SignatureMismatch));
287 }
288 auto* holder = static_cast<detail::TypedCallableHolder<Sig>*>(
289 it->second.mTypedCallable.get());
290 if (!holder) {
291 return BindResult<Sig>(fl::expected<RpcFn<Sig>, BindError>::failure(BindError::NotFound));
292 }
293 return BindResult<Sig>(holder->mFn);
294 }
fl::unordered_map< fl::string, detail::RpcEntry > mRegistry
Definition rpc.h:406
fl::function< Sig > RpcFn
Definition rpc_handle.h:14
BindError
Definition rpc.h:103
@ SignatureMismatch
Definition rpc.h:105
static const void * id() FL_NO_EXCEPT

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

+ Here is the call graph for this function: