mirror of
https://github.com/Hopiu/postal.js.git
synced 2026-03-17 14:40:24 +00:00
98 lines
1.5 KiB
JavaScript
98 lines
1.5 KiB
JavaScript
/*!
|
|
* socket.io-node
|
|
* Copyright(c) 2011 LearnBoost <dev@learnboost.com>
|
|
* 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;
|
|
};
|