12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- /**
- * connection statistics service
- * record connection, login count and list
- */
- var Service = function(app) {
- this.serverId = app.getServerId();
- this.connCount = 0;
- this.loginedCount = 0;
- this.logined = {};
- };
- module.exports = Service;
- var pro = Service.prototype;
- /**
- * Add logined userstate.
- *
- * @param uid {String} userstate id
- * @param info {Object} record for logined userstate
- */
- pro.addLoginedUser = function(uid, info) {
- if(!this.logined[uid]) {
- this.loginedCount++;
- }
- info.uid = uid;
- this.logined[uid] = info;
- };
- /**
- * Update userstate info.
- * @param uid {String} userstate id
- * @param info {Object} info for update.
- */
- pro.updateUserInfo = function(uid, info) {
- var user = this.logined[uid];
- if (!user) {
- return;
- }
- for (var p in info) {
- if (info.hasOwnProperty(p) && typeof info[p] !== 'function') {
- user[p] = info[p];
- }
- }
- };
- /**
- * Increase connection count
- */
- pro.increaseConnectionCount = function() {
- this.connCount++;
- };
- /**
- * Remote logined userstate
- *
- * @param uid {String} userstate id
- */
- pro.removeLoginedUser = function(uid) {
- if(!!this.logined[uid]) {
- this.loginedCount--;
- }
- delete this.logined[uid];
- };
- /**
- * Decrease connection count
- *
- * @param uid {String} uid
- */
- pro.decreaseConnectionCount = function(uid) {
- if(this.connCount) {
- this.connCount--;
- }
- if(!!uid) {
- this.removeLoginedUser(uid);
- }
- };
- /**
- * Get statistics info
- *
- * @return {Object} statistics info
- */
- pro.getStatisticsInfo = function() {
- var list = [];
- for(var uid in this.logined) {
- list.push(this.logined[uid]);
- }
- return {serverId: this.serverId, totalConnCount: this.connCount, loginedCount: this.loginedCount, loginedList: list};
- };
|