diff --git a/src/SessionManager.ts b/src/SessionManager.ts index 5dc8c72..9377185 100644 --- a/src/SessionManager.ts +++ b/src/SessionManager.ts @@ -2,6 +2,8 @@ import EventEmitter from "events"; import fs from "fs"; import Job from "./Job/Job"; import Logger from "./Logger"; +import PduProcessor from "./PDUProcessor/PduProcessor"; +import ProcessorManager from "./PDUProcessor/ProcessorManager"; import SmppSession from "./SmppSession"; export default abstract class SessionManager { @@ -67,6 +69,18 @@ export default abstract class SessionManager { this.createSession(session.url || session.port, session.username, session.password).then((sessionObj: SmppSession) => { sessionObj.defaultSingleJob = Job.deserialize(session.defaultSingleJob); sessionObj.defaultMultipleJob = Job.deserialize(session.defaultMultipleJob); + + let loadedProcessors: PduProcessor[] = session.preprocessors.concat(session.postprocessors); + sessionObj.appliedProcessors.forEach((processor: PduProcessor) => { + if (!loadedProcessors.find(p => p.name === processor.name)) { + ProcessorManager.detachProcessor(sessionObj, processor); + } + }); + loadedProcessors.forEach((processor: PduProcessor) => { + if (!sessionObj.appliedProcessors.find(p => p.name === processor.name)) { + ProcessorManager.attachProcessor(sessionObj, ProcessorManager.getProcessor(processor.name)); + } + }); }); }); } catch (e) { diff --git a/src/main.ts b/src/main.ts index 1776f2e..74a644f 100644 --- a/src/main.ts +++ b/src/main.ts @@ -3,6 +3,7 @@ import Client from "./Client/Client"; import ClientSessionManager from "./Client/ClientSessionManager"; import HttpServer from "./HttpServer/HttpServer"; import Logger from "./Logger"; +import SourceEnumeratorProcessor from "./PDUProcessor/Preprocessor/Client/SourceEnumeratorProcessor"; import ProcessorManager from "./PDUProcessor/ProcessorManager"; import WSServer from "./WS/WSServer"; @@ -43,12 +44,13 @@ async function main() { // await client.doConnect(); // await client.doBind(); // client.sendMultipleDefault(); + ProcessorManager.attachProcessor(client, ProcessorManager.getProcessor(SourceEnumeratorProcessor.name)); console.log("OK"); } main(); -// process.on('exit', cleanup); -// process.on('SIGINT', cleanup); -// process.on('SIGUSR1', cleanup); -// process.on('SIGUSR2', cleanup); \ No newline at end of file +process.on('exit', cleanup); +process.on('SIGINT', cleanup); +process.on('SIGUSR1', cleanup); +process.on('SIGUSR2', cleanup); \ No newline at end of file