mirror of
https://github.com/gryf/pentadactyl-pm.git
synced 2026-01-05 20:34:11 +01:00
Use async IO to dump data from storage module.
This commit is contained in:
@@ -13,6 +13,8 @@ lazyRequire("config", ["config"]);
|
|||||||
lazyRequire("io", ["IO"]);
|
lazyRequire("io", ["IO"]);
|
||||||
lazyRequire("overlay", ["overlay"]);
|
lazyRequire("overlay", ["overlay"]);
|
||||||
|
|
||||||
|
lazyRequire("resource://gre/modules/osfile.jsm", ["OS"]);
|
||||||
|
|
||||||
var win32 = /^win(32|nt)$/i.test(services.runtime.OS);
|
var win32 = /^win(32|nt)$/i.test(services.runtime.OS);
|
||||||
var myObject = JSON.parse("{}").constructor;
|
var myObject = JSON.parse("{}").constructor;
|
||||||
|
|
||||||
@@ -52,7 +54,8 @@ var StoreBase = Class("StoreBase", {
|
|||||||
delete: function delete_() {
|
delete: function delete_() {
|
||||||
delete storage.keys[this.name];
|
delete storage.keys[this.name];
|
||||||
delete storage[this.name];
|
delete storage[this.name];
|
||||||
storage.infoPath.child(this.name).remove(false);
|
return OS.File.remove(
|
||||||
|
storage.infoPath.child(this.name).path);
|
||||||
},
|
},
|
||||||
|
|
||||||
save: function () { (self.storage || storage)._saveData(this); },
|
save: function () { (self.storage || storage)._saveData(this); },
|
||||||
@@ -215,8 +218,12 @@ var Storage = Module("Storage", {
|
|||||||
_saveData: function saveData(obj) {
|
_saveData: function saveData(obj) {
|
||||||
if (obj.privateData && storage.privateMode)
|
if (obj.privateData && storage.privateMode)
|
||||||
return;
|
return;
|
||||||
if (obj.store && storage.infoPath)
|
if (obj.store && storage.infoPath) {
|
||||||
storage.infoPath.child(obj.name).write(obj.serial);
|
var { path } = storage.infoPath.child(obj.name);
|
||||||
|
return OS.File.writeAtomic(
|
||||||
|
path, obj.serial,
|
||||||
|
{ tmpPath: path + ".part" });
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
storeForSession: function storeForSession(key, val) {
|
storeForSession: function storeForSession(key, val) {
|
||||||
@@ -238,7 +245,8 @@ var Storage = Module("Storage", {
|
|||||||
this[key].timer.flush();
|
this[key].timer.flush();
|
||||||
delete this[key];
|
delete this[key];
|
||||||
delete this.keys[key];
|
delete this.keys[key];
|
||||||
this.infoPath.child(key).remove(false);
|
return OS.File.remove(
|
||||||
|
this.infoPath.child(key).path);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user