occaecatidicta
Version:
153 lines (134 loc) • 4 kB
text/typescript
/*!
* Omelox
* Copyright(c) 2012 xiechengchao <xiecc@163.com>
* MIT Licensed
*/
/**
* Module dependencies.
*/
import * as fs from 'fs';
import * as path from 'path';
import { Application, ApplicationOptions } from './application';
import { isFunction } from 'util';
import { BackendSession } from './common/service/backendSessionService';
import { HybridConnector } from './connectors/hybridconnector';
import { UDPConnector } from './connectors/udpconnector';
import { MQTTConnector } from './connectors/mqttconnector';
import { SIOConnector } from './connectors/sioconnector';
import { DirectPushScheduler } from './pushSchedulers/direct';
import { BufferPushScheduler } from './pushSchedulers/buffer';
import { ChannelService } from './common/service/channelService';
import { ConnectionComponent } from './components/connection';
import { ConnectorComponent } from './components/connector';
import { DictionaryComponent } from './components/dictionary';
import { MasterComponent } from './components/master';
import { MonitorComponent } from './components/monitor';
import { ProtobufComponent } from './components/protobuf';
import { ProxyComponent } from './components/proxy';
import { PushSchedulerComponent } from './components/pushScheduler';
import { RemoteComponent } from './components/remote';
import { ServerComponent } from './components/server';
import {SessionComponent } from './components/session';
import { RpcToobusyFilter } from './filters/rpc/toobusy';
import { RpcLogFilter } from './filters/rpc/rpcLog';
import { ToobusyFilter } from './filters/handler/toobusy';
import { TimeFilter } from './filters/handler/time';
import { SerialFilter } from './filters/handler/serial';
import { TimeoutFilter } from './filters/handler/timeout';
let Package = require('../../package');
import {default as events} from './util/events';
import { BackendSessionComponent } from './components/backendSession';
import { ChannelComponent } from './components/channel';
/**
* Expose `createApplication()`.
*
* @module
*/
export class Pinus {
private _app: Application;
/**
* Framework version.
*/
version = Package.version;
/**
* Event definitions that would be emitted by app.event
*/
events = events;
/**
* auto loaded components
*/
components =
{
backendSession : BackendSessionComponent,
channel : ChannelComponent,
connection : ConnectionComponent,
connector : ConnectorComponent,
dictionary : DictionaryComponent,
master : MasterComponent,
monitor : MonitorComponent,
protobuf : ProtobufComponent,
proxy : ProxyComponent,
pushScheduler : PushSchedulerComponent,
remote : RemoteComponent,
server : ServerComponent,
session : SessionComponent,
};
/**
* auto loaded filters
*/
filters =
{
serial : SerialFilter,
time : TimeFilter,
timeout : TimeoutFilter,
toobusy : ToobusyFilter,
};
/**
* auto loaded rpc filters
*/
rpcFilters =
{
rpcLog : RpcLogFilter,
toobusy : RpcToobusyFilter,
};
/**
* connectors
*/
connectors =
{
sioconnector : SIOConnector,
hybridconnector : HybridConnector,
udpconnector : UDPConnector,
mqttconnector : MQTTConnector,
};
/**
* pushSchedulers
*/
pushSchedulers =
{
direct : DirectPushScheduler,
buffer : BufferPushScheduler,
};
constructor() {
}
/**
* Create an omelox application.
*
* @return {Application}
* @memberOf Pinus
* @api public
*/
createApp(opts ?: ApplicationOptions) {
let app = new Application();
app.init(opts);
this._app = app;
return app;
}
/**
* Get application
*/
get app() {
return this._app;
}
}
export let omelox = new Pinus();