dl
Version:
DreamLab Libs
53 lines (42 loc) • 1.7 kB
JavaScript
var Class = require("core").Class;
var CFMemcache = require('./CFMemcache.js').CFMemcache;
var GCFMemcache = function () {
this.Extends = CFMemcache;
this.initialize = function (options) {
this.parent(options);
};
this.get = function (key, callback) {
var that = this;
this.parent(key, function (data) {
// dane sie generuja -> pytamy za chwile
if (that._isGeneratingContent(data)) {
console.log('MEM: data is generating...');
setTimeout(function () {
console.log('MEM: checking data is generated...');
that.get(key, callback);
}, 3);
// nie ma danych -> ustawiamy flage ze sie generuja
} else if (!data) {
console.log('MEM: there is no data! I need to generate content!');
that._collapsedForwardMarkStart(key);
callback(null);
// mamy dane -> wywolujemy oryginalny callback
} else {
console.log('MEM: data is in cache. Calling callback with data!');
callback(data);
}
});
};
this._collapsedForwardMarkStart = function (key) {
this.set(key, GCFMemcache.GENERATING);
};
this._collapsedForwardMarkClear = function (key) {
this['delete'](key);
};
this._isGeneratingContent = function (data) {
return data == GCFMemcache.GENERATING;
};
};
GCFMemcache = new Class(new GCFMemcache());
GCFMemcache.GENERATING = "##GCFMemcache.GENERATING##";
exports.GCFMemcache = GCFMemcache;