modpol/storage-local.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.