this.diag = diag || false
}
-let load = (diag, key, default_value) => {
+let read = (diag, key, default_value) => {
if (diag)
- console.log('opening', key)
+ console.log('reading', key)
let result = {dirty: false}
result.done = (
async () => {
return result
}
-JSONCache.prototype.open = async function(key, default_value) {
+JSONCache.prototype.read = async function(key, default_value) {
let result = this.map.get(key)
if (result === undefined) {
- result = load(this.diag, key, default_value)
+ result = read(this.diag, key, default_value)
this.map.set(key, result)
await result.done
delete result.done
return result.value
}
-let save = (diag, key, result, timeout) => {
+let write = (diag, key, result, timeout) => {
if (!result.dirty) {
result.dirty = true
setTimeout(
async () => {
if (diag)
- console.log('flushing', key)
+ console.log('writing', key)
result.dirty = false
let text = JSON.stringify(result.value) + '\n'
try {
}
}
-JSONCache.prototype.flush = async function(key, value, timeout) {
+JSONCache.prototype.write = async function(key, value, timeout) {
let result = this.map.get(key)
if (result === undefined) {
assert(value !== undefined)
await result.done
result.value = value
}
- save(this.diag, key, result, timeout)
+ write(this.diag, key, result, timeout)
}
JSONCache.prototype.modify = async function(
// atomically check that result.done === undefined before the modification
let result = this.map.get(key)
if (result === undefined) {
- result = load(this.diag, key, default_value)
+ result = read(this.diag, key, default_value)
this.map.set(key, result)
await result.done
delete result.done
await result.done
result.done = (
async () => {
- result.value = await modify_func(result.value)
- save(this.diag, key, result, timeout)
+ await modify_func(result)
+ write(this.diag, key, result, timeout)
}
)()
await result.done