UNPKG

1.18 kBJavaScriptView Raw
1/**
2 * clouds monitor
3 *
4 * @author 老雷<leizongmin@gmail.com>
5 */
6
7var define = require('./define');
8var utils = require('./utils');
9
10
11/**
12 * Clouds Server
13 *
14 * @param {Object} options
15 * - {Object} redis {host, port, db, prefix}
16 */
17function CloudsMonitor (options) {
18 options = options || {};
19
20 // 初始化CloudsBase
21 options.type = 'monitor';
22 CloudsMonitor.super_.call(this, options);
23
24 // 处理调用请求
25 this._setHandler('message.c', this._handleCallService);
26}
27
28utils.inheritsBase(CloudsMonitor);
29
30/**
31 * 查询状态
32 *
33 * @param {Function} callback
34 */
35CloudsMonitor.prototype.status = function (callback) {
36 var me = this;
37 var key = me._key('S', '*');
38 me._connection.keys(key, function (err, list) {
39 if (err) return callback(err);
40 var servers = {};
41 var methods = {};
42 list.forEach(function (k) {
43 var b = k.split(':').slice(1);
44 var m = b[0];
45 var i = b[1];
46 if (!servers[i]) servers[i] = [];
47 servers[i].push(m);
48 if (!methods[m]) methods[m] = [];
49 methods[m].push(i);
50 });
51 callback(null, {
52 servers: servers,
53 methods: methods
54 });
55 });
56};
57
58
59
60module.exports = CloudsMonitor;