More refactoring
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
import EventEmitter from "events";
|
import EventEmitter from "events";
|
||||||
import {Job} from "../Job";
|
import {Job} from "../Job/Job";
|
||||||
|
import {JobEvents} from "../Job/JobEvents";
|
||||||
import Logger from "../Logger";
|
import Logger from "../Logger";
|
||||||
import PersistentPromise from "../PersistentPromise";
|
import PersistentPromise from "../PersistentPromise";
|
||||||
import {SmppSession} from "../SmppSession";
|
import {SmppSession} from "../SmppSession";
|
||||||
@@ -9,12 +10,12 @@ import ClientStatus from "./ClientStatus";
|
|||||||
const NanoTimer = require('nanotimer');
|
const NanoTimer = require('nanotimer');
|
||||||
const smpp = require("smpp");
|
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;
|
const MESSAGE_SEND_UPDATE_DELAY: number = Number(process.env.MESSAGE_SEND_UPDATE_DELAY) || 500;
|
||||||
|
|
||||||
export class Client implements SmppSession {
|
export class Client implements SmppSession {
|
||||||
defaultSingleJob: Job = Job.createEmptySingle();
|
defaultSingleJob!: Job;
|
||||||
defaultMultipleJob: Job = Job.createEmptyMultiple();
|
defaultMultipleJob!: Job;
|
||||||
private readonly eventEmitter: EventEmitter;
|
private readonly eventEmitter: EventEmitter;
|
||||||
private readonly logger: Logger;
|
private readonly logger: Logger;
|
||||||
private readonly _id: number;
|
private readonly _id: number;
|
||||||
@@ -51,10 +52,6 @@ const MESSAGE_SEND_UPDATE_DELAY: number = Number(process.env.MESSAGE_SEND_UPDATE
|
|||||||
|
|
||||||
private _url: string;
|
private _url: string;
|
||||||
|
|
||||||
getUrl(): string {
|
|
||||||
return this._url;
|
|
||||||
}
|
|
||||||
|
|
||||||
set url(value: string) {
|
set url(value: string) {
|
||||||
this._url = value;
|
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());
|
this.eventEmitter.emit(ClientEvents.STATE_CHANGED, this.serialize());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getUrl(): string {
|
||||||
|
return this._url;
|
||||||
|
}
|
||||||
|
|
||||||
setDefaultSingleJob(job: Job): void {
|
setDefaultSingleJob(job: Job): void {
|
||||||
this.defaultSingleJob = job;
|
this.defaultSingleJob = job;
|
||||||
this.eventEmitter.emit(ClientEvents.STATE_CHANGED, this.serialize());
|
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 {
|
setDefaultMultipleJob(job: Job): void {
|
||||||
this.defaultMultipleJob = job;
|
this.defaultMultipleJob = job;
|
||||||
this.eventEmitter.emit(ClientEvents.STATE_CHANGED, this.serialize());
|
this.eventEmitter.emit(ClientEvents.STATE_CHANGED, this.serialize());
|
||||||
|
job.on(JobEvents.STATE_CHANGED, () => this.eventEmitter.emit(ClientEvents.STATE_CHANGED, this.serialize()));
|
||||||
}
|
}
|
||||||
|
|
||||||
getDefaultSingleJob(): Job {
|
getDefaultSingleJob(): Job {
|
||||||
@@ -91,7 +94,10 @@ const MESSAGE_SEND_UPDATE_DELAY: number = Number(process.env.MESSAGE_SEND_UPDATE
|
|||||||
}
|
}
|
||||||
|
|
||||||
initialize(): void {
|
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 {
|
connect(): PersistentPromise {
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
import fs from "fs";
|
import fs from "fs";
|
||||||
import {Client} from "./Client";
|
import {Client} from "./Client";
|
||||||
import {Job} from "../Job";
|
import {Job} from "../Job/Job";
|
||||||
import Logger from "../Logger";
|
import Logger from "../Logger";
|
||||||
import SessionManager from "../SessionManager";
|
import SessionManager from "../SessionManager";
|
||||||
import {SmppSession} from "../SmppSession";
|
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
|
// TODO: Implement on change event and propagate it to sessions
|
||||||
// Do something like "onJobChange" here...
|
// Do something like "onJobChange" here...
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
import {Client} from "./Client/Client";
|
import {Client} from "./Client/Client";
|
||||||
import {ClientEvents} from "./Client/ClientEvents";
|
import {ClientEvents} from "./Client/ClientEvents";
|
||||||
import ClientSessionManager from "./Client/ClientSessionManager";
|
import ClientSessionManager from "./Client/ClientSessionManager";
|
||||||
import {Job} from "./Job";
|
import {Job} from "./Job/Job";
|
||||||
import Logger from "./Logger";
|
import Logger from "./Logger";
|
||||||
|
|
||||||
const smpp = require("smpp");
|
const smpp = require("smpp");
|
||||||
@@ -40,11 +40,12 @@ async function main() {
|
|||||||
destination_addr: "1234567890",
|
destination_addr: "1234567890",
|
||||||
short_message: "Hello World"
|
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.setDefaultSingleJob(new Job(pdu1));
|
||||||
client.setDefaultMultipleJob(new Job(pdu1, 100, 10));
|
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