/*! * socket.io-node * Copyright(c) 2011 LearnBoost * MIT Licensed */ /** * Expose the constructor. */ exports = module.exports = Store; /** * Module dependencies. */ var EventEmitter = process.EventEmitter; /** * Store interface * * @api public */ function Store (options) { this.options = options; this.clients = {}; }; /** * Inherit from EventEmitter. */ Store.prototype.__proto__ = EventEmitter.prototype; /** * Initializes a client store * * @param {String} id * @api public */ Store.prototype.client = function (id) { if (!this.clients[id]) { this.clients[id] = new (this.constructor.Client)(this, id); } return this.clients[id]; }; /** * Destroys a client * * @api {String} sid * @param {Number} number of seconds to expire client data * @api private */ Store.prototype.destroyClient = function (id, expiration) { if (this.clients[id]) { this.clients[id].destroy(expiration); delete this.clients[id]; } return this; }; /** * Destroys the store * * @param {Number} number of seconds to expire client data * @api private */ Store.prototype.destroy = function (clientExpiration) { var keys = Object.keys(this.clients) , count = keys.length; for (var i = 0, l = count; i < l; i++) { this.destroyClient(keys[i], clientExpiration); } this.clients = {}; return this; }; /** * Client. * * @api public */ Store.Client = function (store, id) { this.store = store; this.id = id; };