thinkjs/lib/Lib/Driver/Session/FileSession.js
2014-06-03 10:27:31 +08:00

60 lines
1.7 KiB
JavaScript

/**
* 文件Session
* @return {[type]} [description]
*/
var os = require("os");
module.exports = inherits("FileCache", function(){
"use strict";
return {
gcType: "FileSession",
/**
* 差异化的init
* @return {[type]} [description]
*/
init: function(options){
options = options || {};
options.cache_path = C('session_path') || (os.tmpdir() + "/thinkjs");
this.super_("init", options);
this.key = options.cookie;
},
initData: function(){
if (!this.promise) {
var self = this;
this.promise = this.getData().then(function(data){
self.sessionData = data || {};
})
}
return this.promise;
},
get: function(name){
var self = this;
return this.initData().then(function(){
return self.sessionData[name];
});
},
set: function(name, value, timeout){
var self = this;
return this.initData().then(function(){
self.sessionData[name] = value;
if (timeout) {
self.options.timeout = timeout;
}
});
},
rm: function(){
this.sessionData = {};
return getPromise();
},
/**
* 将数据写入到文件中
* @return {[type]} [description]
*/
flush: function(){
var self = this;
return this.initData().then(function(){
return self.setData(self.sessionData);
})
}
};
});