FastLED 3.9.15
Loading...
Searching...
No Matches
server.h
Go to the documentation of this file.
1#pragma once
2
3#include "fl/stl/json.h"
4#include "fl/stl/function.h"
5#include "fl/stl/optional.h"
6#include "fl/stl/vector.h"
7#include "fl/stl/noexcept.h"
8
9namespace fl {
10
27class Server {
28public:
30 using ResponseSink = fl::function<void(const fl::json&)>;
32
40
46 Server(RequestSource source, ResponseSink sink);
47
48 virtual ~Server() FL_NOEXCEPT = default;
49
50 // Non-copyable but movable
51 Server(const Server&) FL_NOEXCEPT = delete;
52 Server& operator=(const Server&) FL_NOEXCEPT = delete;
54 Server& operator=(Server&&) FL_NOEXCEPT = default;
55
61
66
71
75 size_t update();
76
80 size_t pull();
81
85 size_t push();
86
87protected:
92};
93
94} // namespace fl
size_t push()
Push queued responses to sink.
size_t update()
Main update: pull + push.
fl::vector< fl::json > mOutgoingQueue
Definition server.h:91
void setRequestSource(RequestSource source)
Set request source callback.
size_t pull()
Pull requests from source, process, queue responses.
fl::function< fl::optional< fl::json >()> RequestSource
Definition server.h:29
void setRequestHandler(RequestHandler handler)
Set request handler.
RequestHandler mRequestHandler
Definition server.h:90
RequestSource mRequestSource
Definition server.h:88
void setResponseSink(ResponseSink sink)
Set response sink callback.
Server() FL_NOEXCEPT
Default constructor.
fl::function< void(const fl::json &)> ResponseSink
Definition server.h:30
fl::function< fl::json(const fl::json &)> RequestHandler
Definition server.h:31
ResponseSink mResponseSink
Definition server.h:89
FastLED's Elegant JSON Library: fl::json
Base definition for an LED controller.
Definition crgb.hpp:179
#define FL_NOEXCEPT