1 | 'use strict';
|
2 |
|
3 |
|
4 |
|
5 | const fs = require('fs');
|
6 | const path = require('path');
|
7 | const Package = require('../package');
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 | const Pomelo = {
|
14 |
|
15 | version:Package.version,
|
16 |
|
17 | events:require('./util/events'),
|
18 |
|
19 | components:{},
|
20 |
|
21 | filters:{},
|
22 |
|
23 | rpcFilters:{},
|
24 |
|
25 | };
|
26 |
|
27 |
|
28 |
|
29 |
|
30 | Pomelo.connectors = Object.defineProperties({}, {
|
31 | 'sioconnector':{get:load.bind(null, './connectors/sioconnector')},
|
32 | 'hybridconnector':{get:load.bind(null, './connectors/hybridconnector')},
|
33 | 'udpconnector':{get:load.bind(null, './connectors/udpconnector')},
|
34 | 'mqttconnector':{get:load.bind(null, './connectors/mqttconnector')},
|
35 | });
|
36 |
|
37 |
|
38 |
|
39 |
|
40 | Pomelo.pushSchedulers = Object.defineProperties({},{
|
41 | 'direct':{get:load.bind(null, './pushSchedulers/direct')},
|
42 | 'buffer':{get:load.bind(null, './pushSchedulers/buffer')},
|
43 | });
|
44 |
|
45 |
|
46 |
|
47 |
|
48 |
|
49 |
|
50 |
|
51 |
|
52 | Pomelo.createApp = (opts) =>
|
53 | {
|
54 | const app = require('./application');
|
55 | app.init(opts);
|
56 | this.app = app;
|
57 | return app;
|
58 | };
|
59 |
|
60 |
|
61 |
|
62 |
|
63 | Object.defineProperty(Pomelo, 'app', {
|
64 | get : () =>{
|
65 | return this.app;
|
66 | }
|
67 | });
|
68 |
|
69 |
|
70 |
|
71 |
|
72 | fs.readdirSync(`${__dirname}/components`).forEach(function(filename)
|
73 | {
|
74 | if (!/\.js$/.test(filename))
|
75 | {
|
76 | return;
|
77 | }
|
78 | const name = path.basename(filename, '.js');
|
79 | const _load = load.bind(null, './components/', name);
|
80 | Object.defineProperty(Pomelo.components, name, {get:_load});
|
81 | Object.defineProperty(Pomelo, name, {get:_load});
|
82 | });
|
83 |
|
84 | fs.readdirSync(`${__dirname}/filters/handler`).forEach(function(filename)
|
85 | {
|
86 | if (!/\.js$/.test(filename))
|
87 | {
|
88 | return;
|
89 | }
|
90 | const name = path.basename(filename, '.js');
|
91 | const _load = load.bind(null, './filters/handler/', name);
|
92 | Object.defineProperty(Pomelo.filters, name, {get:_load});
|
93 | Object.defineProperty(Pomelo, name, {get:_load});
|
94 | });
|
95 |
|
96 | fs.readdirSync(`${__dirname}/filters/rpc`).forEach(function(filename)
|
97 | {
|
98 | if (!/\.js$/.test(filename))
|
99 | {
|
100 | return;
|
101 | }
|
102 | const name = path.basename(filename, '.js');
|
103 | const _load = load.bind(null, './filters/rpc/', name);
|
104 | Object.defineProperty(Pomelo.rpcFilters, name, {get:_load});
|
105 | });
|
106 |
|
107 | function load(path, name)
|
108 | {
|
109 | if (name)
|
110 | {
|
111 | return require(path + name);
|
112 | }
|
113 | return require(path);
|
114 | }
|
115 |
|
116 | module.exports = Pomelo;
|