- do_read()
- line = tostring(line)
- if line == "OK" or line:match("^ACK ") then
- local success = line == "OK"
- local arg
- if success then
- arg = self._pending_reply
+ local _, _, key, value = string.find(line, "([^:]+):%s(.+)")
+ if key then
+ local k = string.lower(key)
+ if k == "binary" then
+ value = tonumber(value)
+ local data = {}
+ while value > 0 do
+ local b = assert(obj:read_bytes(value))
+ table.insert(data, b.data)
+ value = value - #b
+ end
+ local w = obj:read_bytes(1) -- read newline at end of binary
+ self._pending_reply[k] = table.concat(data)
+ elseif k == "changed" then
+ if not self._pending_reply[k] then
+ self._pending_reply[k] = {}
+ end
+
+ self._pending_reply[k][value] = true