118 lines
3.4 KiB
Lua
118 lines
3.4 KiB
Lua
-- ===================================================================
|
|
-- /storage-local.lua
|
|
-- Persistent storage in /data using Serpent Serializer
|
|
-- Unix systems only
|
|
|
|
-- ===================================================================
|
|
-- Set directories and filenames
|
|
|
|
modpol.datadir = modpol.topdir .. "/data"
|
|
modpol.file_ledger = modpol.datadir .. "/ledger.dat"
|
|
modpol.file_orgs = modpol.datadir .. "/orgs.dat"
|
|
|
|
os.execute ("mkdir -p " .. modpol.datadir)
|
|
|
|
ocutil.setlogdir (modpol.datadir)
|
|
ocutil.setlogname ("modpol.log")
|
|
|
|
-- ===================================================================
|
|
-- Set up the Serpent Serializer functions.
|
|
|
|
modpol.serpent = {}
|
|
dofile (modpol.topdir .. "/serpent/serpent.lua")
|
|
|
|
-- ===================================================================
|
|
-- This function stores "ledger" data to disk.
|
|
|
|
local store_ledger = function()
|
|
local ok = ocutil.file_write (modpol.file_ledger,
|
|
modpol.serpent.dump (modpol.ledger))
|
|
|
|
if ok ~= true then
|
|
ocutil.fatal_error ("store_data: ledger")
|
|
end
|
|
|
|
local nn = ocutil.table_length (modpol.ledger)
|
|
local str = "entries"
|
|
if nn == 1 then str = "entry" end
|
|
ocutil.log (nn .. " global ledger entries stored to disk")
|
|
end
|
|
|
|
-- ===================================================================
|
|
-- This function stores "orgs" data to disk.
|
|
|
|
local store_orgs = function()
|
|
local ok = ocutil.file_write (modpol.file_orgs,
|
|
modpol.serpent.dump (modpol.orgs))
|
|
|
|
if ok ~= true then
|
|
ocutil.fatal_error ("store_data: orgs")
|
|
end
|
|
|
|
local nn = ocutil.table_length (modpol.orgs)
|
|
local str = "entries"
|
|
if nn == 1 then str = "entry" end
|
|
ocutil.log (nn .. " orgs stored to disk")
|
|
end
|
|
|
|
-- ===================================================================
|
|
-- This function stores data to disk.
|
|
|
|
modpol.store_data = function()
|
|
store_ledger()
|
|
store_orgs()
|
|
end
|
|
|
|
-- ===================================================================
|
|
-- This function loads "ledger" data from disk.
|
|
|
|
local load_ledger = function()
|
|
local obj = ocutil.file_read (modpol.file_ledger )
|
|
if obj ~= nil then
|
|
local func, err = load (obj)
|
|
if err then
|
|
ocutil.fatal_error ("load_data: ledger" )
|
|
end
|
|
modpol.ledger = func()
|
|
|
|
local nn = ocutil.table_length (modpol.ledger)
|
|
local str = "entries"
|
|
if nn == 1 then str = "entry" end
|
|
ocutil.log (nn .. " global ledger entries loaded from disk")
|
|
else
|
|
ocutil.log ("No stored global ledger data found")
|
|
end
|
|
end
|
|
|
|
-- ===================================================================
|
|
-- This function loads "orgs" data from disk.
|
|
|
|
local load_orgs = function()
|
|
local obj = ocutil.file_read (modpol.file_orgs )
|
|
if obj ~= nil then
|
|
local func, err = load (obj)
|
|
if err then
|
|
ocutil.fatal_error ("load_data: orgs" )
|
|
end
|
|
modpol.orgs = func()
|
|
|
|
local nn = ocutil.table_length (modpol.orgs)
|
|
local str = "entries"
|
|
if nn == 1 then str = "entry" end
|
|
ocutil.log (nn .. " orgs loaded from disk")
|
|
else
|
|
ocutil.log ("No stored orgs data found")
|
|
end
|
|
end
|
|
|
|
-- ===================================================================
|
|
-- This function loads stored data from disk.
|
|
|
|
modpol.load_storage = function()
|
|
load_ledger()
|
|
load_orgs()
|
|
end
|
|
|
|
-- ===================================================================
|
|
-- End of file.
|