mirror of https://github.com/koreader/koreader
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.1 KiB
Lua
42 lines
1.1 KiB
Lua
local ffi = require("ffi")
|
|
local DEBUG = require("dbg")
|
|
local util = require("ffi/util")
|
|
local Event = require("ui/event")
|
|
local MessageQueue = require("ui/message/messagequeue")
|
|
|
|
local dummy = require("ffi/zeromq_h")
|
|
local zyre = ffi.load("libs/libzyre.so.1")
|
|
|
|
local ZyreMessageQueue = MessageQueue:new{
|
|
header = {},
|
|
}
|
|
|
|
function ZyreMessageQueue:start()
|
|
self.node = zyre.zyre_new()
|
|
for key, value in pairs(self.header) do
|
|
zyre.zyre_set_header(self.node, key, value)
|
|
end
|
|
zyre.zyre_set_verbose(self.node)
|
|
zyre.zyre_start(self.node)
|
|
zyre.zyre_join(self.node, "GLOBAL")
|
|
end
|
|
|
|
function ZyreMessageQueue:stop()
|
|
if self.node ~= nil then
|
|
DEBUG("stop zyre node")
|
|
zyre.zyre_stop(self.node)
|
|
zyre.zyre_destroy(ffi.new('zyre_t *[1]', self.node))
|
|
end
|
|
end
|
|
|
|
function ZyreMessageQueue:waitEvent()
|
|
local msg = zyre.zyre_recv_nowait(self.node)
|
|
while msg ~= nil do
|
|
table.insert(self.messages, msg)
|
|
msg = zyre.zyre_recv_nowait(self.node)
|
|
end
|
|
return self:handleZMsgs(self.messages)
|
|
end
|
|
|
|
return ZyreMessageQueue
|