Skip to content

Commit b75cead

Browse files
fixup! added Mqtt client Interface definition
1 parent 6d01e79 commit b75cead

File tree

1 file changed

+14
-34
lines changed

1 file changed

+14
-34
lines changed

src/MqttInterface.h

Lines changed: 14 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -8,28 +8,6 @@
88
// namespace arduino { // namespace net { namespace mqtt {
99
typedef int error_t; // TODO move this to be generally available
1010

11-
class IStream {
12-
public:
13-
virtual ~IStream() = default;
14-
15-
virtual int available() = 0;
16-
virtual int read() = 0;
17-
// virtual int peek() = 0;
18-
virtual size_t readBytes(uint8_t *buffer, size_t length) = 0; // read chars from stream into buffer
19-
};
20-
21-
class MqttOStream { // if OStream becomes available in arduino core api, we still need to extend its definition
22-
public:
23-
MqttOStream(error_t rc=0): rc(rc) {}
24-
virtual ~MqttOStream() = default;
25-
26-
virtual size_t write(uint8_t) = 0;
27-
virtual size_t write(const uint8_t *buffer, size_t size) = 0;
28-
virtual int availableForWrite() = 0;
29-
30-
const error_t rc;
31-
};
32-
3311
using Topic = const char* const;
3412

3513
#if defined(__has_include)
@@ -38,10 +16,10 @@ using Topic = const char* const;
3816
#include <functional>
3917

4018
// for incoming published messages
41-
using MqttReceiveCallback = std::function<void(Topic, IStream&)>;
19+
using MqttReceiveCallback = std::function<void(Topic)>;
4220
#endif
4321
#else
44-
typedef void(*MqttReceiveCallback)(Topic, IStream&)>;
22+
typedef void(*MqttReceiveCallback)(Topic)>;
4523
#endif
4624

4725
// TODO MQTT 5.0 stuff
@@ -112,16 +90,6 @@ class MqttClientInterface {
11290
size_t size, MqttQos qos = QosDefault,
11391
MqttPublishFlag flags = MqttPublishFlags::None) = 0;
11492

115-
/**
116-
* Publish method for publishing messages in "streaming mode", meaning that
117-
* they can outsize the available ram. The OStream returned handles the lifecycle of
118-
* an mqtt Message, from the opening header to its termaination.
119-
* The concrete OStream is defined by the implementation
120-
*/
121-
virtual MqttOStream&& publish(
122-
Topic t, MqttQos qos = QosDefault,
123-
MqttPublishFlag flags = MqttPublishFlags::None) = 0;
124-
12593
virtual error_t unsubscribe(Topic t) = 0;
12694
virtual void poll() = 0;
12795
virtual error_t ping() = 0;
@@ -145,4 +113,16 @@ class MqttClientInterface {
145113
// virtual void setClient(Client&) = 0;
146114
// Could this be a better solution?
147115
// virtual void setClient(Client&&) = 0;
116+
117+
virtual int read() = 0;
118+
virtual int read(uint8_t payload[], size_t size) = 0;
119+
virtual int available() = 0;
120+
121+
// The following methods should return the current rx message parameters.
122+
// FIXME what if none?
123+
virtual String messageTopic() const = 0;
124+
virtual int messageDup() const = 0;
125+
virtual uint16_t messageId() const = 0;
126+
virtual MqttQos messageQoS() const = 0;
127+
virtual int messageRetain() const = 0;
148128
};

0 commit comments

Comments
 (0)