Compare commits
4 Commits
ecebc72d3b
...
26c6b24c78
Author | SHA1 | Date |
---|---|---|
Luca | 26c6b24c78 | |
Luca | f9b8ecf600 | |
Luca | 970c2fa1f3 | |
Luca | 49b7fdb832 |
22
mqtt.lua
22
mqtt.lua
|
@ -1,6 +1,6 @@
|
||||||
local mqtt = {}
|
local mqtt = {}
|
||||||
|
|
||||||
local read_varint = function (conn, first_byte)
|
local readVarint = function (conn, first_byte)
|
||||||
local b
|
local b
|
||||||
if first_byte == nil then
|
if first_byte == nil then
|
||||||
b = conn:read(1)
|
b = conn:read(1)
|
||||||
|
@ -29,9 +29,9 @@ end
|
||||||
local MqttClient = {}
|
local MqttClient = {}
|
||||||
|
|
||||||
function mqtt.open (address, port)
|
function mqtt.open (address, port)
|
||||||
local conn = require("internet").open(address, port)
|
local conn, err = require("internet").open(address, port)
|
||||||
if conn == nil then
|
if conn == nil then
|
||||||
return nil, "connection failed"
|
return nil, err
|
||||||
end
|
end
|
||||||
|
|
||||||
return MqttClient:new(conn), nil
|
return MqttClient:new(conn), nil
|
||||||
|
@ -42,7 +42,9 @@ function MqttClient:new (conn)
|
||||||
setmetatable(c, self)
|
setmetatable(c, self)
|
||||||
self.__index = self
|
self.__index = self
|
||||||
|
|
||||||
conn.read_varint = read_varint
|
conn.readVarint = readVarint
|
||||||
|
conn:setTimeout(1)
|
||||||
|
|
||||||
c.conn = conn
|
c.conn = conn
|
||||||
c.is_connecting = false
|
c.is_connecting = false
|
||||||
c.is_connected = false
|
c.is_connected = false
|
||||||
|
@ -58,7 +60,7 @@ function MqttClient:handle ()
|
||||||
|
|
||||||
local ptype, length, _ = string.unpack("B B", s)
|
local ptype, length, _ = string.unpack("B B", s)
|
||||||
|
|
||||||
local length, err = self.conn:read_varint(length)
|
local length, err = self.conn:readVarint(length)
|
||||||
if err ~= nil then
|
if err ~= nil then
|
||||||
return err
|
return err
|
||||||
end
|
end
|
||||||
|
@ -142,6 +144,11 @@ function MqttClient:connect (username, password)
|
||||||
return err
|
return err
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local _, err = self.conn:flush()
|
||||||
|
if err ~= nil then
|
||||||
|
return err
|
||||||
|
end
|
||||||
|
|
||||||
self.is_connecting = true
|
self.is_connecting = true
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
@ -163,6 +170,11 @@ function MqttClient:disconnect (reason)
|
||||||
return err
|
return err
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local _, err = self.conn:flush()
|
||||||
|
if err ~= nil then
|
||||||
|
return err
|
||||||
|
end
|
||||||
|
|
||||||
self.is_connecting = false
|
self.is_connecting = false
|
||||||
self.is_connected = false
|
self.is_connected = false
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue