From 703044ae390898c17ed8268750b7e966dd789b38 Mon Sep 17 00:00:00 2001 From: Waqas Hussain Date: Mon, 30 Mar 2009 03:22:34 +0500 Subject: Added: datamanager: Allow a callback to be installed which selectively prevents disk writes --- util/datamanager.lua | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'util') diff --git a/util/datamanager.lua b/util/datamanager.lua index f67c8864..614f0c80 100644 --- a/util/datamanager.lua +++ b/util/datamanager.lua @@ -50,6 +50,7 @@ local function mkdir(path) end local data_path = "data"; +local callback; ------- API ------------- @@ -57,6 +58,9 @@ function set_data_path(path) log("info", "Setting data path to: %s", path); data_path = path; end +function set_callback(func) + callback = func; +end function getpath(username, host, datastore, ext, create) ext = ext or "dat"; @@ -93,6 +97,7 @@ function store(username, host, datastore, data) if not data then data = {}; end + if callback and callback(username, host, datastore) then return true; end -- save the datastore local f, msg = io_open(getpath(username, host, datastore, nil, true), "w+"); if not f then @@ -113,6 +118,7 @@ end function list_append(username, host, datastore, data) if not data then return; end + if callback and callback(username, host, datastore) then return true; end -- save the datastore local f, msg = io_open(getpath(username, host, datastore, "list", true), "a+"); if not f then @@ -130,6 +136,7 @@ function list_store(username, host, datastore, data) if not data then data = {}; end + if callback and callback(username, host, datastore) then return true; end -- save the datastore local f, msg = io_open(getpath(username, host, datastore, "list", true), "w+"); if not f then -- cgit v1.2.3