2023-07-10 03:31:56 +00:00
|
|
|
--
|
|
|
|
-- Protected Graphics Interface
|
|
|
|
--
|
|
|
|
|
|
|
|
local log = require("scada-common.log")
|
|
|
|
local util = require("scada-common.util")
|
|
|
|
|
|
|
|
local pgi = {}
|
|
|
|
|
|
|
|
local data = {
|
|
|
|
pkt_list = nil, ---@type nil|graphics_element
|
|
|
|
pkt_entry = nil, ---@type function
|
|
|
|
-- session entries
|
|
|
|
s_entries = { pkt = {} }
|
|
|
|
}
|
|
|
|
|
|
|
|
-- link list boxes
|
|
|
|
---@param pkt_list graphics_element pocket list element
|
|
|
|
---@param pkt_entry function pocket entry constructor
|
|
|
|
function pgi.link_elements(pkt_list, pkt_entry)
|
|
|
|
data.pkt_list = pkt_list
|
|
|
|
data.pkt_entry = pkt_entry
|
|
|
|
end
|
|
|
|
|
|
|
|
-- unlink all fields, disabling the PGI
|
|
|
|
function pgi.unlink()
|
|
|
|
data.pkt_list = nil
|
|
|
|
data.pkt_entry = nil
|
|
|
|
end
|
|
|
|
|
|
|
|
-- add a PKT entry to the PKT list
|
|
|
|
---@param session_id integer pocket session
|
|
|
|
function pgi.create_pkt_entry(session_id)
|
|
|
|
if data.pkt_list ~= nil and data.pkt_entry ~= nil then
|
|
|
|
local success, result = pcall(data.pkt_entry, data.pkt_list, session_id)
|
|
|
|
|
|
|
|
if success then
|
|
|
|
data.s_entries.pkt[session_id] = result
|
|
|
|
else
|
|
|
|
log.error(util.c("PGI: failed to create PKT entry (", result, ")"), true)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
-- delete a PKT entry from the PKT list
|
|
|
|
---@param session_id integer pocket session
|
|
|
|
function pgi.delete_pkt_entry(session_id)
|
|
|
|
if data.s_entries.pkt[session_id] ~= nil then
|
|
|
|
local success, result = pcall(data.s_entries.pkt[session_id].delete)
|
|
|
|
data.s_entries.pkt[session_id] = nil
|
|
|
|
|
|
|
|
if not success then
|
|
|
|
log.error(util.c("PGI: failed to delete PKT entry (", result, ")"), true)
|
|
|
|
end
|
2023-07-19 15:27:33 +00:00
|
|
|
else
|
|
|
|
log.debug(util.c("PGI: tried to delete unknown PKT entry ", session_id))
|
2023-07-10 03:31:56 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
return pgi
|