1 ///
2 module drmi.mqtt.accessor;
3 
4 import drmi.ps.accessor;
5 import drmi.mqtt.transport;
6 
7 import sfw;
8 public import sfw.func;
9 
10 import std.algorithm;
11 import std.array;
12 import std.datetime;
13 import core.thread;
14 import std.conv;
15 import std.experimental.logger;
16 
17 ///
18 class MqttAccessor(T) : Accessor!T
19 {
20 protected:
21     MqttTransport tr;
22 
23 public:
24 
25     void callTransportLoop() { tr.loop(); }
26 
27     SFWApp app;
28 
29     alias Settings = MosquittoClient.Settings;
30 
31     ///
32     this(T obj, string uniq="") { this(obj, Settings.init, uniq); }
33 
34     ///
35     this(T obj, Settings sets, string uniq="")
36     {
37         tr = new MqttTransport(sets);
38         super(tr, obj, uniq, (s){ sfw.sleep(s); });
39         app = new SFWApp(128);
40         app.spawnInfLoop({ callTransportLoop(); });
41     }
42 }