/*! * socket.io-node * Copyright(c) 2011 LearnBoost * MIT Licensed */ /** * Module dependencies. */ var crypto = require('crypto') , Store = require('../store'); /** * Exports the constructor. */ exports = module.exports = Memory; Memory.Client = Client; /** * Memory store * * @api public */ function Memory (opts) { Store.call(this, opts); }; /** * Inherits from Store. */ Memory.prototype.__proto__ = Store.prototype; /** * Publishes a message. * * @api private */ Memory.prototype.publish = function () { }; /** * Subscribes to a channel * * @api private */ Memory.prototype.subscribe = function () { }; /** * Unsubscribes * * @api private */ Memory.prototype.unsubscribe = function () { }; /** * Client constructor * * @api private */ function Client () { Store.Client.apply(this, arguments); this.data = {}; }; /** * Inherits from Store.Client */ Client.prototype.__proto__ = Store.Client; /** * Gets a key * * @api public */ Client.prototype.get = function (key, fn) { fn(null, this.data[key] === undefined ? null : this.data[key]); return this; }; /** * Sets a key * * @api public */ Client.prototype.set = function (key, value, fn) { this.data[key] = value; fn && fn(null); return this; }; /** * Has a key * * @api public */ Client.prototype.has = function (key, fn) { fn(null, key in this.data); }; /** * Deletes a key * * @api public */ Client.prototype.del = function (key, fn) { delete this.data[key]; fn && fn(null); return this; }; /** * Destroys the client. * * @param {Number} number of seconds to expire data * @api private */ Client.prototype.destroy = function (expiration) { if ('number' != typeof expiration) { this.data = {}; } else { var self = this; setTimeout(function () { self.data = {}; }, expiration * 1000); } return this; };