UNPKG

core

Version:

Core Libs

58 lines (47 loc) 1.77 kB
var Memcache = require('./Memcache.js').Memcache; var assertions = require('../common/Assertions.js').Assertions; var CFMemcache = function(options){ Memcache.call(this, options); this._memory = {}; }; CFMemcache.prototype = Object.create(Memcache.prototype); CFMemcache.prototype.get = function(key, callback){ assertions.isString(key, Memcache.Exception.WRONG_TYPE); if (this._memory.hasOwnProperty(key)) { this._memory[key].callbacks.push(callback); } else { // dodaje klucz do memory this._memory[key] = { data: null, callbacks: [callback] }; var that = this; Memcache.prototype.get.call(this, key, function(data) { that._memory[key].data = data; var callback = null; while (callback = that._memory[key].callbacks.shift()) { try { callback(that._memory[key].data); } catch (ex){ console.warn('emerg', "CFMEMCACHE CALLBACK FAILED", ex.message); } } delete that._memory[key]; }); } }; CFMemcache.prototype.set = function(key, value, callback, lifeTime, waitForReply){ assertions.isString(key, Memcache.Exception.WRONG_TYPE); if(this._memory.hasOwnProperty(key)){ this._memory[key].data = value; } Memcache.prototype.set.call(this, key, value, callback, lifeTime, waitForReply); }; CFMemcache.prototype['delete'] = function(key, callback){ assertions.isString(key, Memcache.Exception.WRONG_TYPE); if(this._memory.hasOwnProperty(key)){ this._memory[key].data = null; } Memcache.prototype['delete'].call(this, key, callback); }; exports.CFMemcache = CFMemcache;