FastLED 3.10.8
Loading...
Searching...
No Matches

◆ pull()

size_t fl::Server::pull ( )

Pull requests from source, process, queue responses.

Definition at line 47 of file server.cpp.hpp.

47 {
49 return 0;
50 }
51
52 size_t processed = 0;
53
54 // Pull JSON-RPC requests from source until none available
55 while (auto optRequest = mRequestSource()) {
56 fl::json request = fl::move(*optRequest);
57
58 // Process request through handler
59 fl::json response = mRequestHandler(request);
60
61 // Queue response (skip scheduled acknowledgments and async skip markers).
62 // `noEnqueue` is the new envelope marker (#3228); accept legacy `__skip`
63 // for one release of back-compat.
64 bool isScheduledAck = response.contains("scheduled") && response["scheduled"].as_bool().value_or(false);
65 bool isAsyncSkip = (response.contains("noEnqueue") && response["noEnqueue"].as_bool().value_or(false))
66 || (response.contains("__skip") && response["__skip"].as_bool().value_or(false));
67 if (!response.is_null() && !isScheduledAck && !isAsyncSkip) {
68 mOutgoingQueue.push_back(fl::move(response));
69 }
70
71 processed++;
72 }
73
74 return processed;
75}
fl::vector< fl::json > mOutgoingQueue
Definition server.h:104
RequestHandler mRequestHandler
Definition server.h:100
RequestSource mRequestSource
Definition server.h:98
constexpr remove_reference< T >::type && move(T &&t) FL_NO_EXCEPT
Definition move.h:30

References fl::FL_NO_EXCEPT, mOutgoingQueue, fl::adl_barrier::move(), mRequestHandler, and mRequestSource.

Referenced by operator=(), fl::Remote::update(), and update().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: