UNPKG

1.99 kBJavaScriptView Raw
1/**
2 * clouds
3 *
4 * @author 老雷<leizongmin@gmail.com>
5 */
6
7var util = require('util');
8var events = require('events');
9var os = require('os');
10var leiNS = require('lei-ns');
11var createDebug = require('debug');
12var utils = require('lei-utils');
13var redis = require('redis');
14var define = require('./define');
15module.exports = exports = utils.merge(utils, exports);
16
17
18exports.debug = function (n) {
19 return createDebug('clouds:' + n);
20};
21
22exports.createNamespace = function (data) {
23 var ns = new leiNS.Namespace();
24 Object.keys(data).forEach(function (k) {
25 ns(k, data[k]);
26 });
27 return ns;
28};
29
30/**
31 * 取唯一标识符
32 *
33 * @param {String} type 类型,可选s或c
34 * @return {String}
35 */
36exports.uniqueId = function (type) {
37 // 与当前主机名字相关,但考虑到主机名可能会很长,使用部分MD5值
38 var name = utils.md5(os.hostname()).substr(0, 8);
39 type = type.toLowerCase().substr(0, 1);
40 var ret = [type, name, process.pid, exports.uniqueId.counter++].join('.');
41
42 debug('generate uniqueId: %s', ret);
43 return ret;
44};
45
46exports.uniqueId.counter = 0;
47
48/**
49 * 继承EventEmitter
50 *
51 * @param {Function} fn
52 */
53exports.inheritsEventEmitter = function (fn) {
54 util.inherits(fn, events.EventEmitter);
55};
56
57/**
58 * 继承CloudsBase
59 *
60 * @param {Function} fn
61 */
62exports.inheritsBase = function (fn) {
63 util.inherits(fn, require('./base'));
64};
65
66/**
67 * 创建Redis连接
68 *
69 * @param {String} host
70 * @param {Number} port
71 * @param {Number} db
72 * @param {String} password
73 * @return {Object}
74 */
75exports.createRedisConnection = function (host, port, db, password) {
76 host = host || define.redisHost;
77 port = port || define.redisPort;
78 db = db || define.redisDb;
79 var options = {};
80 if (password) options.auth_pass = password;
81 var client = redis.createClient(port, host, options);
82 if (db > 0) {
83 client.select(db);
84 }
85 debug('create redis connection: %s:%s [%s]', host, port, db);
86 return client;
87};
88
89
90
91
92var debug = exports.debug('utils');