Added dependency injection

This commit is contained in:
peter
2020-01-23 14:57:30 +01:00
parent 7a0c88df11
commit 78ad241526
24 changed files with 356 additions and 176 deletions
+11 -5
View File
@@ -10,14 +10,15 @@ import * as express from 'express';
import { GuildManager } from '../Components/Guild/GuildManager';
import { ItemManager } from '../Components/Item/ItemManager';
import { RaidManager } from '../Components/Raid/RaidManager';
import { CharacterManager } from '../Components/User/CharacterManager';
import { LoginManager } from '../Components/User/LoginManager';
import { CharacterManager } from '../Components/Character/CharacterManager';
import { LoginManager } from '../Components/Login/LoginManager';
import { RootComponent } from '../Injector/ServiceDecorator';
import { TableDefinitionExporter } from '../Types/Interfaces';
import { AdminConf, TableDefiniton } from '../Types/Types';
import { RPCConfigLoader } from '../Components/RPCConfigLoader';
import { FrontworkComponent } from '../Types/FrontworkComponent';
import { IAdmin } from './Interface';
import { Injector } from '../Injector/Injector';
const logger = getLogger("admin", 'debug')
@@ -64,11 +65,16 @@ implements TableDefinitionExporter, IAdmin {
await this.makeKnex()
this.startWebsocket()
await Promise.all( this.frontworkComponents.map(c => c.initialize?c.initialize():undefined ))
logger.debug(this.frontworkComponents.length+" components initialized")
this.startWebserver()
}
stop(){
process.exit(0);
Promise.race([
Promise.all( this.frontworkComponents.map(c => c.stop?c.stop():undefined )),
new Promise((res, rej) => { setTimeout(res, 250);})
]).catch(e => logger.warn(e))
.finally(() => { process.exit(0) })
}
protected configChangeHandler = (conf:AdminConf, key?:string) => {
@@ -95,6 +101,7 @@ implements TableDefinitionExporter, IAdmin {
this.rpcServer = new RPCServer(20000, [
...this.frontworkComponents,
])
logger.debug("Websocket up on", 20000)
}
private startWebserver(){
@@ -183,6 +190,5 @@ implements TableDefinitionExporter, IAdmin {
process.on( 'SIGINT', function() {
logger.info("Shutting down from SIGINT (Ctrl-C)" );
// some other closing procedures go here
process.exit(0);
Injector.resolve<FrontworkAdmin>(FrontworkAdmin).stop()
})