1 module drmi.mqtt.transport; 2 3 import std.exception : enforce; 4 5 public import drmi.ps.iface; 6 7 public import mosquitto; 8 9 /// 10 class MqttTransport : Transport 11 { 12 private: 13 MosquittoClient cli; 14 MosquittoClient ecli() @property { return enforce(cli, "cli is null"); } 15 16 MosquittoClient.Settings sets; 17 public: 18 19 /// 20 this(MosquittoClient.Settings sets) 21 { 22 this.sets = sets; 23 initMosquittoLib(); 24 } 25 26 /// 27 void init(string name) 28 { 29 sets.clientId = name; 30 cli = new MosquittoClient(sets); 31 } 32 33 /// 34 void connect() { ecli.connect(); } 35 /// 36 bool connected() { return ecli.connected(); } 37 /// 38 void reconnect() { ecli.reconnect(); } 39 40 /// 41 void loop() { ecli.loop(); } 42 43 /// 44 void publish(string topic, const(ubyte)[] data, QoS qos) 45 { ecli.publish(topic, data, qos); } 46 47 /// 48 void subscribe(string topic, void delegate(string, const(ubyte)[]) dlg, QoS qos) 49 { ecli.subscribe(topic, dlg, qos); } 50 }