FastLED 3.10.9
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 284 of file rpc.h.

284 {
285 fl::string key(name);
286 auto it = mRegistry.find(key);
287 if (it == mRegistry.end()) {
288 return BindResult<Sig>(fl::expected<RpcFn<Sig>, BindError>::failure(BindError::NotFound));
289 }
290 if (it->second.mTypeTag != detail::TypeTag<Sig>::id()) {
291 return BindResult<Sig>(fl::expected<RpcFn<Sig>, BindError>::failure(BindError::SignatureMismatch));
292 }
293 auto* holder = static_cast<detail::TypedCallableHolder<Sig>*>(
294 it->second.mTypedCallable.get());
295 if (!holder) {
296 return BindResult<Sig>(fl::expected<RpcFn<Sig>, BindError>::failure(BindError::NotFound));
297 }
298 return BindResult<Sig>(holder->mFn);
299 }
fl::unordered_map< fl::string, detail::RpcEntry > mRegistry
Definition rpc.h:417
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: