FastLED 3.10.6
Loading...
Searching...
No Matches
response_stream.h
Go to the documentation of this file.
1#pragma once
2
3#include "fl/stl/function.h"
4#include "fl/stl/json.h"
6#include "fl/stl/noexcept.h"
7
8namespace fl {
9
13 fl::function<void(fl::JsonStreamWriter&, const fl::json&, const fl::json&)>;
14
16 const fl::json& id) FL_NO_EXCEPT {
17 if (!id.has_value() || id.is_null()) {
18 writer.valueNull();
19 return;
20 }
21 if (id.is_string()) {
22 fl::string s = id.as_string().value_or("");
23 writer.value(s.c_str());
24 return;
25 }
26 if (id.is_bool()) {
27 writer.value(id.as_bool().value_or(false));
28 return;
29 }
30 if (id.is_int()) {
31 writer.value(id.as_int().value_or(0));
32 return;
33 }
34 if (id.is_number()) {
35 writer.value(static_cast<fl::i64>(id.as_float().value_or(0.0f)));
36 return;
37 }
38 writer.valueNull();
39}
40
43 const fl::json& requestId,
44 bool includeId,
45 const fl::JsonStreamCallback& writeResult) FL_NO_EXCEPT {
46 writer.beginObject();
47 writer.member("jsonrpc", "2.0");
48 writer.key("result");
49 if (writeResult) {
50 writeResult(writer);
51 } else {
52 writer.valueNull();
53 }
54 if (includeId) {
55 writer.key("id");
57 }
58 writer.endObject();
59}
60
61} // namespace fl
int requestId
const char * c_str() const FL_NO_EXCEPT
FastLED's Elegant JSON Library: fl::json
void streamJsonRpcId(fl::JsonStreamWriter &writer, const fl::json &id) FL_NO_EXCEPT
fl::function< void(fl::JsonStreamWriter &)> JsonStreamCallback
fl::function< void(fl::JsonStreamWriter &, const fl::json &, const fl::json &)> StreamingRpcHandler
void streamJsonRpcResultEnvelope(fl::JsonStreamWriter &writer, const fl::json &requestId, bool includeId, const fl::JsonStreamCallback &writeResult) FL_NO_EXCEPT
InputGamut g FL_NO_EXCEPT
Definition rgbw.h:121
fl::function< void(fl::JsonStreamCallback)> ResponseStreamSink
Base definition for an LED controller.
Definition crgb.hpp:179