More refactoring
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import EventEmitter from "events";
|
||||
import {Job} from "../Job";
|
||||
import {Job} from "../Job/Job";
|
||||
import {JobEvents} from "../Job/JobEvents";
|
||||
import Logger from "../Logger";
|
||||
import PersistentPromise from "../PersistentPromise";
|
||||
import {SmppSession} from "../SmppSession";
|
||||
@@ -9,12 +10,12 @@ import ClientStatus from "./ClientStatus";
|
||||
const NanoTimer = require('nanotimer');
|
||||
const smpp = require("smpp");
|
||||
|
||||
const AUTO_ENQUIRE_LINK_PERIOD: number = Number(process.env.AUTO_ENQUIRE_LINK_PERIOD) || 500;
|
||||
const AUTO_ENQUIRE_LINK_PERIOD: number = Number(process.env.AUTO_ENQUIRE_LINK_PERIOD) || 30000;
|
||||
const MESSAGE_SEND_UPDATE_DELAY: number = Number(process.env.MESSAGE_SEND_UPDATE_DELAY) || 500;
|
||||
|
||||
export class Client implements SmppSession {
|
||||
defaultSingleJob: Job = Job.createEmptySingle();
|
||||
defaultMultipleJob: Job = Job.createEmptyMultiple();
|
||||
export class Client implements SmppSession {
|
||||
defaultSingleJob!: Job;
|
||||
defaultMultipleJob!: Job;
|
||||
private readonly eventEmitter: EventEmitter;
|
||||
private readonly logger: Logger;
|
||||
private readonly _id: number;
|
||||
@@ -51,10 +52,6 @@ const MESSAGE_SEND_UPDATE_DELAY: number = Number(process.env.MESSAGE_SEND_UPDATE
|
||||
|
||||
private _url: string;
|
||||
|
||||
getUrl(): string {
|
||||
return this._url;
|
||||
}
|
||||
|
||||
set url(value: string) {
|
||||
this._url = value;
|
||||
}
|
||||
@@ -67,14 +64,20 @@ const MESSAGE_SEND_UPDATE_DELAY: number = Number(process.env.MESSAGE_SEND_UPDATE
|
||||
this.eventEmitter.emit(ClientEvents.STATE_CHANGED, this.serialize());
|
||||
}
|
||||
|
||||
getUrl(): string {
|
||||
return this._url;
|
||||
}
|
||||
|
||||
setDefaultSingleJob(job: Job): void {
|
||||
this.defaultSingleJob = job;
|
||||
this.eventEmitter.emit(ClientEvents.STATE_CHANGED, this.serialize());
|
||||
job.on(JobEvents.STATE_CHANGED, () => this.eventEmitter.emit(ClientEvents.STATE_CHANGED, this.serialize()));
|
||||
}
|
||||
|
||||
setDefaultMultipleJob(job: Job): void {
|
||||
this.defaultMultipleJob = job;
|
||||
this.eventEmitter.emit(ClientEvents.STATE_CHANGED, this.serialize());
|
||||
job.on(JobEvents.STATE_CHANGED, () => this.eventEmitter.emit(ClientEvents.STATE_CHANGED, this.serialize()));
|
||||
}
|
||||
|
||||
getDefaultSingleJob(): Job {
|
||||
@@ -91,7 +94,10 @@ const MESSAGE_SEND_UPDATE_DELAY: number = Number(process.env.MESSAGE_SEND_UPDATE
|
||||
}
|
||||
|
||||
initialize(): void {
|
||||
return;
|
||||
this.defaultSingleJob = Job.createEmptySingle();
|
||||
this.defaultMultipleJob = Job.createEmptyMultiple();
|
||||
this.defaultSingleJob.on(JobEvents.STATE_CHANGED, () => this.eventEmitter.emit(ClientEvents.STATE_CHANGED, this.serialize()));
|
||||
this.defaultMultipleJob.on(JobEvents.STATE_CHANGED, () => this.eventEmitter.emit(ClientEvents.STATE_CHANGED, this.serialize()));
|
||||
}
|
||||
|
||||
connect(): PersistentPromise {
|
||||
|
@@ -1,6 +1,6 @@
|
||||
import fs from "fs";
|
||||
import {Client} from "./Client";
|
||||
import {Job} from "../Job";
|
||||
import {Job} from "../Job/Job";
|
||||
import Logger from "../Logger";
|
||||
import SessionManager from "../SessionManager";
|
||||
import {SmppSession} from "../SmppSession";
|
||||
|
34
src/Job.ts
34
src/Job.ts
@@ -1,34 +0,0 @@
|
||||
const smpp = require("smpp");
|
||||
|
||||
// TODO: Implement on change event and propagate it to sessions
|
||||
export class Job {
|
||||
pdu: any;
|
||||
perSecond?: number;
|
||||
count?: number;
|
||||
|
||||
constructor(pdu: any, perSecond?: number, count?: number) {
|
||||
this.pdu = pdu;
|
||||
this.perSecond = perSecond;
|
||||
this.count = count;
|
||||
}
|
||||
|
||||
serialize(): string {
|
||||
return JSON.stringify(this);
|
||||
}
|
||||
|
||||
static deserialize(serialized: any): Job {
|
||||
if (!serialized.pdu.command) {
|
||||
throw new Error("Invalid serialized job");
|
||||
}
|
||||
let pdu: any = new smpp.PDU(serialized.pdu.command, serialized.pdu);
|
||||
return new Job(pdu, serialized.perSecond, serialized.count);
|
||||
}
|
||||
|
||||
static createEmptySingle(): Job {
|
||||
return new Job({});
|
||||
}
|
||||
|
||||
static createEmptyMultiple(): Job {
|
||||
return new Job({}, 1, 1);
|
||||
}
|
||||
}
|
71
src/Job/Job.ts
Normal file
71
src/Job/Job.ts
Normal file
@@ -0,0 +1,71 @@
|
||||
import EventEmitter from "events";
|
||||
import {JobEvents} from "./JobEvents";
|
||||
|
||||
const smpp = require("smpp");
|
||||
|
||||
export class Job {
|
||||
private eventEmitter: EventEmitter = new EventEmitter();
|
||||
|
||||
constructor(pdu: any, perSecond?: number, count?: number) {
|
||||
this._pdu = pdu;
|
||||
this._perSecond = perSecond;
|
||||
this._count = count;
|
||||
}
|
||||
|
||||
private _pdu: any;
|
||||
|
||||
get pdu(): any {
|
||||
return this._pdu;
|
||||
}
|
||||
|
||||
set pdu(value: any) {
|
||||
this._pdu = value;
|
||||
this.eventEmitter.emit(JobEvents.STATE_CHANGED, {});
|
||||
}
|
||||
|
||||
private _perSecond?: number;
|
||||
|
||||
get perSecond(): number {
|
||||
return <number>this._perSecond;
|
||||
}
|
||||
|
||||
set perSecond(value: number) {
|
||||
this._perSecond = value;
|
||||
this.eventEmitter.emit(JobEvents.STATE_CHANGED, {});
|
||||
}
|
||||
|
||||
private _count?: number;
|
||||
|
||||
get count(): number {
|
||||
return <number>this._count;
|
||||
}
|
||||
|
||||
set count(value: number) {
|
||||
this._count = value;
|
||||
this.eventEmitter.emit(JobEvents.STATE_CHANGED, {});
|
||||
}
|
||||
|
||||
static deserialize(serialized: any): Job {
|
||||
if (!serialized._pdu) {
|
||||
return Job.createEmptyMultiple();
|
||||
}
|
||||
let pdu: any = new smpp.PDU(serialized._pdu.command, serialized._pdu);
|
||||
return new Job(pdu, serialized._perSecond, serialized._count);
|
||||
}
|
||||
|
||||
static createEmptySingle(): Job {
|
||||
return new Job({});
|
||||
}
|
||||
|
||||
static createEmptyMultiple(): Job {
|
||||
return new Job({}, 1, 1);
|
||||
}
|
||||
|
||||
serialize(): string {
|
||||
return JSON.stringify(this);
|
||||
}
|
||||
|
||||
on(event: string, callback: (...args: any[]) => void): void {
|
||||
this.eventEmitter.on(event, callback);
|
||||
}
|
||||
}
|
3
src/Job/JobEvents.ts
Normal file
3
src/Job/JobEvents.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
export class JobEvents {
|
||||
static readonly STATE_CHANGED: string = "STATE_CHANGED";
|
||||
}
|
@@ -1,4 +1,4 @@
|
||||
import {Job} from "./Job";
|
||||
import {Job} from "./Job/Job";
|
||||
|
||||
// TODO: Implement on change event and propagate it to sessions
|
||||
// Do something like "onJobChange" here...
|
||||
|
@@ -1,7 +1,7 @@
|
||||
import {Client} from "./Client/Client";
|
||||
import {ClientEvents} from "./Client/ClientEvents";
|
||||
import ClientSessionManager from "./Client/ClientSessionManager";
|
||||
import {Job} from "./Job";
|
||||
import {Job} from "./Job/Job";
|
||||
import Logger from "./Logger";
|
||||
|
||||
const smpp = require("smpp");
|
||||
@@ -40,11 +40,12 @@ async function main() {
|
||||
destination_addr: "1234567890",
|
||||
short_message: "Hello World"
|
||||
});
|
||||
// client.sendMultipleDefault();
|
||||
|
||||
// client.on(ClientEvents.ANY_PDU, (pdu: any) => console.log(pdu));
|
||||
client.on(ClientEvents.STATE_CHANGED, (state: any) => console.log(state.defaultMultipleJob));
|
||||
client.setDefaultSingleJob(new Job(pdu1));
|
||||
client.setDefaultMultipleJob(new Job(pdu1, 100, 10));
|
||||
client.sendMultipleDefault();
|
||||
|
||||
client.on(ClientEvents.ANY_PDU, (pdu: any) => console.log(pdu));
|
||||
});
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user