c9-core/node_modules/connect-architect/connect.session.redis/multi-region-store.js

64 wiersze
1.5 KiB
JavaScript

// master
// slave
var debug = require('debug')('connect:redis-multi-region');
module.exports = function(connect) {
var Store = connect.session.Store;
var RedisStore = require("connect-redis")(connect);
function RedisMultiRegionStore(options) {
options.master.prefix = options.prefix;
options.slave.prefix = options.prefix;
this.master = new RedisStore(options.master);
this.slave = new RedisStore(options.slave);
}
RedisMultiRegionStore.prototype.__proto__ = Store.prototype;
/**
* Attempt to fetch session by the given `sid`.
*
* @param {String} sid
* @param {Function} fn
* @api public
*/
RedisMultiRegionStore.prototype.get = function(sid, fn) {
debug('GET "%s"', sid);
this.slave.get(sid, fn);
};
/**
* Commit the given `sess` object associated with the given `sid`.
*
* @param {String} sid
* @param {Session} sess
* @param {Function} fn
* @api public
*/
RedisMultiRegionStore.prototype.set = function(sid, sess, fn) {
debug("SET %s %j", sid, sess);
this.master.set(sid, sess);
this.slave.set(sid, sess, fn);
};
/**
* Destroy the session associated with the given `sid`.
*
* @param {String} sid
* @api public
*/
RedisMultiRegionStore.prototype.destroy = function(sid, fn) {
debug("DESTROY %s", sid);
this.master.destroy(sid);
this.slave.destroy(sid, fn);
};
return RedisMultiRegionStore;
};