131 lines
2.8 KiB
JavaScript
131 lines
2.8 KiB
JavaScript
/*!
|
|
* Pomelo
|
|
* Copyright(c) 2012 xiechengchao <xiecc@163.com>
|
|
* MIT Licensed
|
|
*/
|
|
|
|
/**
|
|
* Module dependencies.
|
|
*/
|
|
var fs = require('fs');
|
|
var path = require('path');
|
|
var application = require('./application');
|
|
var Package = require('../package');
|
|
|
|
/**
|
|
* Expose `createApplication()`.
|
|
*
|
|
* @module
|
|
*/
|
|
|
|
var Pomelo = module.exports = {};
|
|
|
|
/**
|
|
* Framework version.
|
|
*/
|
|
|
|
Pomelo.version = Package.version;
|
|
|
|
/**
|
|
* Event definitions that would be emitted by app.event
|
|
*/
|
|
Pomelo.events = require('./util/events');
|
|
|
|
/**
|
|
* auto loaded components
|
|
*/
|
|
Pomelo.components = {};
|
|
|
|
/**
|
|
* auto loaded filters
|
|
*/
|
|
Pomelo.filters = {};
|
|
|
|
/**
|
|
* auto loaded rpc filters
|
|
*/
|
|
Pomelo.rpcFilters = {};
|
|
|
|
/**
|
|
* connectors
|
|
*/
|
|
Pomelo.connectors = {};
|
|
Pomelo.connectors.__defineGetter__('sioconnector', load.bind(null, './connectors/sioconnector'));
|
|
Pomelo.connectors.__defineGetter__('hybridconnector', load.bind(null, './connectors/hybridconnector'));
|
|
Pomelo.connectors.__defineGetter__('udpconnector', load.bind(null, './connectors/udpconnector'));
|
|
Pomelo.connectors.__defineGetter__('mqttconnector', load.bind(null, './connectors/mqttconnector'));
|
|
|
|
/**
|
|
* pushSchedulers
|
|
*/
|
|
Pomelo.pushSchedulers = {};
|
|
Pomelo.pushSchedulers.__defineGetter__('direct', load.bind(null, './pushSchedulers/direct'));
|
|
Pomelo.pushSchedulers.__defineGetter__('buffer', load.bind(null, './pushSchedulers/buffer'));
|
|
|
|
var self = this;
|
|
|
|
/**
|
|
* Create an pomelo application.
|
|
*
|
|
* @return {Application}
|
|
* @memberOf Pomelo
|
|
* @api public
|
|
*/
|
|
Pomelo.createApp = function (opts) {
|
|
var app = application;
|
|
app.init(opts);
|
|
self.app = app;
|
|
return app;
|
|
};
|
|
|
|
/**
|
|
* Get application
|
|
*/
|
|
Object.defineProperty(Pomelo, 'app', {
|
|
get:function () {
|
|
return self.app;
|
|
}
|
|
});
|
|
|
|
/**
|
|
* Auto-load bundled components with getters.
|
|
*/
|
|
fs.readdirSync(__dirname + '/components').forEach(function (filename) {
|
|
if (!/\.js$/.test(filename)) {
|
|
return;
|
|
}
|
|
var name = path.basename(filename, '.js');
|
|
var _load = load.bind(null, './components/', name);
|
|
|
|
Pomelo.components.__defineGetter__(name, _load);
|
|
Pomelo.__defineGetter__(name, _load);
|
|
});
|
|
|
|
fs.readdirSync(__dirname + '/filters/handler').forEach(function (filename) {
|
|
if (!/\.js$/.test(filename)) {
|
|
return;
|
|
}
|
|
var name = path.basename(filename, '.js');
|
|
var _load = load.bind(null, './filters/handler/', name);
|
|
|
|
Pomelo.filters.__defineGetter__(name, _load);
|
|
Pomelo.__defineGetter__(name, _load);
|
|
});
|
|
|
|
fs.readdirSync(__dirname + '/filters/rpc').forEach(function (filename) {
|
|
if (!/\.js$/.test(filename)) {
|
|
return;
|
|
}
|
|
var name = path.basename(filename, '.js');
|
|
var _load = load.bind(null, './filters/rpc/', name);
|
|
|
|
Pomelo.rpcFilters.__defineGetter__(name, _load);
|
|
});
|
|
|
|
function load(path, name) {
|
|
if (name) {
|
|
return require(path + name);
|
|
}
|
|
return require(path);
|
|
}
|