#32 new threaded PLC code
This commit is contained in:
59
scada-common/mqueue.lua
Normal file
59
scada-common/mqueue.lua
Normal file
@@ -0,0 +1,59 @@
|
||||
--
|
||||
-- Message Queue
|
||||
--
|
||||
|
||||
TYPE = {
|
||||
COMMAND = 0,
|
||||
DATA = 1,
|
||||
PACKET = 2
|
||||
}
|
||||
|
||||
function new()
|
||||
local queue = {}
|
||||
|
||||
local length = function ()
|
||||
return #queue
|
||||
end
|
||||
|
||||
local empty = function ()
|
||||
return #queue == 0
|
||||
end
|
||||
|
||||
local ready = function ()
|
||||
return #queue > 0
|
||||
end
|
||||
|
||||
local _push = function (qtype, message)
|
||||
table.insert(queue, { qtype = qtype, message = message })
|
||||
end
|
||||
|
||||
local push_command = function (message)
|
||||
_push(TYPE.COMMAND, message)
|
||||
end
|
||||
|
||||
local push_data = function (message)
|
||||
_push(TYPE.DATA, message)
|
||||
end
|
||||
|
||||
local push_packet = function (message)
|
||||
_push(TYPE.PACKET, message)
|
||||
end
|
||||
|
||||
local pop = function ()
|
||||
if #queue > 0 then
|
||||
return table.remove(queue)
|
||||
else
|
||||
return nil
|
||||
end
|
||||
end
|
||||
|
||||
return {
|
||||
length = length,
|
||||
empty = empty,
|
||||
ready = ready,
|
||||
push_packet = push_packet,
|
||||
push_data = push_data,
|
||||
push_command = push_command,
|
||||
pop = pop
|
||||
}
|
||||
end
|
||||
Reference in New Issue
Block a user