------- API -------------
+local _set_data_path;
function set_data_path(path)
+ if _set_data_path then return _set_data_path(path); end
log("debug", "Setting data path to: %s", path);
data_path = path;
end
return username, host, datastore, data;
end
+local _add_callback;
function add_callback(func)
+ if _add_callback then return _add_callback(func); end
if not callbacks[func] then -- Would you really want to set the same callback more than once?
callbacks[func] = true;
callbacks[#callbacks+1] = func;
return true;
end
end
+local _remove_callback;
function remove_callback(func)
+ if _remove_callback then return _remove_callback(func); end
if callbacks[func] then
for i, f in ipairs(callbacks) do
if f == func then
end
end
+local _getpath;
function getpath(username, host, datastore, ext, create)
+ if _getpath then return _getpath(username, host, datastore, ext, create); end
ext = ext or "dat";
host = (host and encode(host)) or "_global";
username = username and encode(username);
end
end
+local _load;
function load(username, host, datastore)
+ if _load then return _load(username, host, datastore); end
local data, ret = loadfile(getpath(username, host, datastore));
if not data then
log("debug", "Failed to load "..datastore.." storage ('"..ret.."') for user: "..(username or "nil").."@"..(host or "nil"));
return ret;
end
+local _store;
function store(username, host, datastore, data)
+ if _store then return _store(username, host, datastore, data); end
if not data then
data = {};
end
return true;
end
+local _list_append;
function list_append(username, host, datastore, data)
+ if _list_append then return _list_append(username, host, datastore, data); end
if not data then return; end
if callback(username, host, datastore) == false then return true; end
-- save the datastore
return true;
end
+local _list_store;
function list_store(username, host, datastore, data)
+ if _list_store then return _list_store(username, host, datastore, data); end
if not data then
data = {};
end
return true;
end
+local _list_load;
function list_load(username, host, datastore)
+ if _list_load then return _list_load(username, host, datastore); end
local data, ret = loadfile(getpath(username, host, datastore, "list"));
if not data then
log("debug", "Failed to load "..datastore.." storage ('"..ret.."') for user: "..(username or "nil").."@"..(host or "nil"));
return items;
end
+function set(t)
+ _set_data_path = t.set_data_path;
+ _add_callback = t.add_callback;
+ _remove_callback = t.remove_callback;
+ _getpath = t.getpath;
+ _load = t.load;
+ _store = t.store;
+ _list_append = t.list_append;
+ _list_store = t.list_store;
+ _list_load = t.list_load;
+end
+function get()
+ return {
+ set_data_path = _set_data_path;
+ add_callback = _add_callback;
+ remove_callback = _remove_callback;
+ getpath = _getpath;
+ load = _load;
+ store = _store;
+ list_append = _list_append;
+ list_store = _list_store;
+ list_load = _list_load;
+ };
+end
+
return _M;