diff --git a/src/PDUProcessor/PduProcessor.ts b/src/PDUProcessor/PduProcessor.ts index b6f8ca4..0872730 100644 --- a/src/PDUProcessor/PduProcessor.ts +++ b/src/PDUProcessor/PduProcessor.ts @@ -1,11 +1,16 @@ import {PDU} from "../CommonObjects"; import Logger from "../Logger"; +import SmppSession from "../SmppSession"; export default abstract class PduProcessor { - abstract readonly serverSessionType: string; + readonly serverSessionType: string; readonly name: string = this.constructor.name; readonly logger: Logger = new Logger(`PduProcessor: ${this.name}`); + constructor(type: string) { + this.serverSessionType = type; + } + abstract processPdu(session: any, pdu: PDU, ...args: any[]): Promise; serialize(): object { diff --git a/src/PDUProcessor/Postprocessor/Center/DebugPduProcessor.ts b/src/PDUProcessor/Postprocessor/Center/DebugPduProcessor.ts index bd3ff73..a0f3c63 100644 --- a/src/PDUProcessor/Postprocessor/Center/DebugPduProcessor.ts +++ b/src/PDUProcessor/Postprocessor/Center/DebugPduProcessor.ts @@ -1,9 +1,14 @@ import Center from "../../../Center/Center"; +import Client from "../../../Client/Client"; import {PDU} from "../../../CommonObjects"; +import SmppSession from "../../../SmppSession"; import Postprocessor from "../Postprocessor"; export default class DebugPduProcessor extends Postprocessor { - serverSessionType: string = Center.name; + constructor(type: string) { + super(type); + console.log(this.serverSessionType); + } processPdu(session: any, pdu: PDU, ...args: any[]): Promise { return new Promise((resolve, reject) => { diff --git a/src/PDUProcessor/Postprocessor/Center/EchoPduProcessor.ts b/src/PDUProcessor/Postprocessor/Center/EchoPduProcessor.ts index 60a5e8e..590296d 100644 --- a/src/PDUProcessor/Postprocessor/Center/EchoPduProcessor.ts +++ b/src/PDUProcessor/Postprocessor/Center/EchoPduProcessor.ts @@ -1,11 +1,15 @@ import Center from "../../../Center/Center"; import {PDU} from "../../../CommonObjects"; +import SmppSession from "../../../SmppSession"; import Postprocessor from "../Postprocessor"; const smpp = require("smpp"); export default class EchoPduProcessor extends Postprocessor { - serverSessionType: string = Center.name; + constructor(type: string) { + super(type); + console.log(this.serverSessionType); + } processPdu(session: any, pdu: PDU, ...args: any[]): Promise { return new Promise((resolve, reject) => { diff --git a/src/PDUProcessor/Postprocessor/Client/DeliverSmReplyProcessor.ts b/src/PDUProcessor/Postprocessor/Client/DeliverSmReplyProcessor.ts index dd4fd7a..bfb58ed 100644 --- a/src/PDUProcessor/Postprocessor/Client/DeliverSmReplyProcessor.ts +++ b/src/PDUProcessor/Postprocessor/Client/DeliverSmReplyProcessor.ts @@ -1,9 +1,13 @@ import Client from "../../../Client/Client"; import {PDU} from "../../../CommonObjects"; +import SmppSession from "../../../SmppSession"; import Postprocessor from "../Postprocessor"; export default class DeliverSmReplyProcessor extends Postprocessor { - serverSessionType: string = Client.name; + constructor(type: string) { + super(type); + console.log(this.serverSessionType); + } processPdu(session: any, pdu: PDU, ...args: any[]): Promise { return new Promise((resolve, reject) => { diff --git a/src/PDUProcessor/Preprocessor/Client/DestinationEnumeratorProcessor.ts b/src/PDUProcessor/Preprocessor/Client/DestinationEnumeratorProcessor.ts index 1d0a600..da3ac37 100644 --- a/src/PDUProcessor/Preprocessor/Client/DestinationEnumeratorProcessor.ts +++ b/src/PDUProcessor/Preprocessor/Client/DestinationEnumeratorProcessor.ts @@ -1,10 +1,14 @@ import Client from "../../../Client/Client"; import {PDU} from "../../../CommonObjects"; +import SmppSession from "../../../SmppSession"; import Preprocessor from "../Preprocessor"; export default class DestinationEnumeratorProcessor extends Preprocessor { - serverSessionType: string = Client.name; - private iterator = 0; + private iterator: number = 0; + constructor(type: string) { + super(type); + console.log(this.serverSessionType); + } processPdu(session: any, pdu: PDU, ...args: any[]): Promise { return new Promise((resolve, reject) => { diff --git a/src/PDUProcessor/Preprocessor/Client/SourceEnumeratorProcessor.ts b/src/PDUProcessor/Preprocessor/Client/SourceEnumeratorProcessor.ts index dc54642..ec91f1a 100644 --- a/src/PDUProcessor/Preprocessor/Client/SourceEnumeratorProcessor.ts +++ b/src/PDUProcessor/Preprocessor/Client/SourceEnumeratorProcessor.ts @@ -1,10 +1,14 @@ import Client from "../../../Client/Client"; import {PDU} from "../../../CommonObjects"; +import SmppSession from "../../../SmppSession"; import Preprocessor from "../Preprocessor"; export default class SourceEnumeratorProcessor extends Preprocessor { - serverSessionType: string = Client.name; - private iterator = 0; + private iterator: number = 0; + constructor(type: string) { + super(type); + console.log(this.serverSessionType); + } processPdu(session: any, pdu: PDU, ...args: any[]): Promise { return new Promise((resolve, reject) => { diff --git a/src/PDUProcessor/ProcessorManager.ts b/src/PDUProcessor/ProcessorManager.ts index 6faa4a2..f0a5561 100644 --- a/src/PDUProcessor/ProcessorManager.ts +++ b/src/PDUProcessor/ProcessorManager.ts @@ -1,3 +1,5 @@ +import Center from "../Center/Center"; +import Client from "../Client/Client"; import Logger from "../Logger"; import SmppSession from "../SmppSession"; import PduProcessor from "./PduProcessor"; @@ -8,18 +10,22 @@ import DestinationEnumeratorProcessor from "./Preprocessor/Client/DestinationEnu import SourceEnumeratorProcessor from "./Preprocessor/Client/SourceEnumeratorProcessor"; export default class ProcessorManager { - static readonly preprocessors: PduProcessor[] = [ - new DestinationEnumeratorProcessor(), - new SourceEnumeratorProcessor() - ]; - static readonly postprocessors: PduProcessor[] = [ - new DebugPduProcessor(), - new EchoPduProcessor(), - new DeliverSmReplyProcessor(), - ]; + static preprocessors: PduProcessor[]; + static postprocessors: PduProcessor[]; private static readonly logger: Logger = new Logger(this.name); constructor() { + // This is an IDIOTIC solution, but it works + // Try running eb22a43 to find out what's wrong with the previous approach + ProcessorManager.preprocessors = [ + new DestinationEnumeratorProcessor(Client.name), + new SourceEnumeratorProcessor(Client.name) + ]; + ProcessorManager.postprocessors = [ + new DebugPduProcessor(Center.name), + new EchoPduProcessor(Center.name), + new DeliverSmReplyProcessor(Center.name), + ]; } static get processors(): PduProcessor[] { diff --git a/src/WS/WSServer.ts b/src/WS/WSServer.ts index 6187bb5..30731e2 100644 --- a/src/WS/WSServer.ts +++ b/src/WS/WSServer.ts @@ -6,7 +6,7 @@ const WebSocket = require("ws"); const WS_SERVER_PORT: number = Number(process.env.WS_SERVER_PORT) || 8191; -export class WSServer { +export default class WSServer { private readonly clients: ClientSet[]; private readonly unknownClients: any[]; private readonly server: any; diff --git a/src/main.ts b/src/main.ts index 7104a48..23a8354 100644 --- a/src/main.ts +++ b/src/main.ts @@ -3,17 +3,20 @@ import CenterSessionManager from "./Center/CenterSessionManager"; import Client from "./Client/Client"; import ClientSessionManager from "./Client/ClientSessionManager"; import Logger from "./Logger"; +import ProcessorManager from "./PDUProcessor/ProcessorManager"; +import WSServer from "./WS/WSServer"; const {PDU} = require("smpp"); let logger = new Logger("main"); +new ProcessorManager(); let clientManager: ClientSessionManager = new ClientSessionManager(); let centerManager: CenterSessionManager = new CenterSessionManager(); // TODO: Add support for encodings // TODO: Fix reading and writing processors // TODO: Try creating multiple entries with the same arg -// let wss: WSServer = new WSServer([clientManager, centerManager]); +let wss: WSServer = new WSServer([clientManager, centerManager]); // let httpServer: HttpServer = new HttpServer(clientManager, centerManager); function cleanup(): void { @@ -38,6 +41,10 @@ async function main() { } // main(); +console.log(ProcessorManager); +// console.log(ProcessorManager.getProcessorsForType(Center.name)); +// console.log(ProcessorManager.processors); +console.log("OK"); // process.on('exit', cleanup); // process.on('SIGINT', cleanup);