31 for (fl::size i = 0; i <
slots.size(); ++i) {
32 if (!
slots[i])
continue;
44 if (!jsonArgs.is_array()) {
45 result.setError(
"arguments must be a JSON array");
49 fl::size received = jsonArgs.size();
51 result.setError(
"argument count mismatch: expected " +
62 RuntimeRpcSlotCleanup cleanup(
mArgTypes, raw_slots);
64 for (fl::size i = 0; i <
mArgCount; ++i) {
71 unsigned char* buf =
new unsigned char[ops->
storage_size];
75 cleanup.constructed = i + 1;
78 for (fl::size w = 0; w < convResult.
warnings().size(); ++w) {
91 unsigned char* result_buf =
new unsigned char[
mResultType->storage_size];
const fl::string & errorMessage() const
const fl::vector< fl::string > & warnings() const
const RpcTypeOps *const * mArgTypes
const RpcTypeOps * mResultType
fl::tuple< TypeConversionResult, json > invoke(const json &jsonArgs) FL_NO_EXCEPT override
RpcTrampolineFn mTrampoline
void reserve(fl::size n) FL_NO_EXCEPT
void push_back(const T &value) FL_NO_EXCEPT
Compile-time linker keep-alive hook for a single fl::Bus.
TypeConversionResult(* decode)(const json &src, void *dst)
void(* default_construct)(void *p)
expected< T, E > result
Alias for expected (Rust-style naming)
InputGamut g FL_NO_EXCEPT
string to_string(T value) FL_NO_EXCEPT
tuple< typename fl::decay< Ts >::type... > make_tuple(Ts &&... args) FL_NO_EXCEPT
Base definition for an LED controller.
const RpcTypeOps *const * arg_types
RuntimeRpcSlotCleanup(const RpcTypeOps *const *types, fl::vector< unsigned char * > &s) FL_NO_EXCEPT
fl::vector< unsigned char * > & slots
~RuntimeRpcSlotCleanup() FL_NO_EXCEPT