Processor class introduced
This commit is contained in:
42
dist/main.js
vendored
42
dist/main.js
vendored
@ -2,28 +2,22 @@
|
|||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const log = require("./log");
|
const log = require("./log");
|
||||||
const mqtt = require("./mqttdispatcher");
|
const mqtt = require("./mqttdispatcher");
|
||||||
class Dispatcher {
|
const plugintest1 = require("./plugintest1");
|
||||||
constructor() {
|
log.info("Dispatcher starting");
|
||||||
this._mqttDispatcher = new mqtt.MqttDispatcher();
|
exports.dispatcher = new mqtt.MqttDispatcher();
|
||||||
this._mqttDispatcher.register('IoT/test', 'print1', (message) => {
|
exports.dispatcher.register('IoT/test', 'print1', (message) => {
|
||||||
log.info("Callback for IoT/test");
|
log.info("Callback for IoT/test");
|
||||||
log.info(`message is ${message}`);
|
log.info(`message is ${message}`);
|
||||||
return `<<${message}>>`;
|
return `<<${message}>>`;
|
||||||
});
|
});
|
||||||
this._mqttDispatcher.register('IoT/test', 'print2', (message) => {
|
exports.dispatcher.register('IoT/test', 'print2', (message) => {
|
||||||
log.info("Callback for IoT/test");
|
log.info("Callback for IoT/test");
|
||||||
log.info(`message is ${message}`);
|
log.info(`message is ${message}`);
|
||||||
return `<<${message}>>`;
|
return `<<${message}>>`;
|
||||||
});
|
});
|
||||||
this._mqttDispatcher.register('IoT/test', 'null1', mqtt.passThrough);
|
exports.dispatcher.register('IoT/test', 'null1', mqtt.passThrough);
|
||||||
this._mqttDispatcher.register('IoT/test', 'null2', mqtt.passThrough);
|
exports.dispatcher.register('IoT/test', 'null2', mqtt.passThrough);
|
||||||
}
|
plugintest1.pluginTest1Start(exports.dispatcher);
|
||||||
exec() {
|
exports.dispatcher.exec();
|
||||||
log.info("Dispatcher starting");
|
log.info("Dispatcher running");
|
||||||
this._mqttDispatcher.exec();
|
|
||||||
log.info("Dispatcher running");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const dispatcher = new Dispatcher();
|
|
||||||
dispatcher.exec();
|
|
||||||
//# sourceMappingURL=main.js.map
|
//# sourceMappingURL=main.js.map
|
15
dist/plugintest1.js
vendored
Normal file
15
dist/plugintest1.js
vendored
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
const log = require("./log");
|
||||||
|
const processor = require("./processor");
|
||||||
|
var exRoute = new processor.ExProc1('label1');
|
||||||
|
function pluginTest1Start(dispatcher) {
|
||||||
|
log.info("starting plugintest1");
|
||||||
|
dispatcher.register('IoT/test', "plugintest1", (message) => {
|
||||||
|
log.info(`plugintest1 runs: ${message}`);
|
||||||
|
exRoute.in(message);
|
||||||
|
return message;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
exports.pluginTest1Start = pluginTest1Start;
|
||||||
|
//# sourceMappingURL=plugintest1.js.map
|
24
dist/processor.js
vendored
Normal file
24
dist/processor.js
vendored
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
const log = require("./log");
|
||||||
|
const events = require("events");
|
||||||
|
class AProcessor extends events.EventEmitter {
|
||||||
|
constructor(label) {
|
||||||
|
super();
|
||||||
|
this._label = label;
|
||||||
|
this.addListener('input', this.process);
|
||||||
|
log.info(`Processor object instanciated: ${this.constructor.name}, ${this._label}`);
|
||||||
|
}
|
||||||
|
in(message) {
|
||||||
|
log.info(`Routing ${message} to Processor class ${this.constructor.name}, ${this._label}`);
|
||||||
|
this.emit('input', message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.AProcessor = AProcessor;
|
||||||
|
class ExProc1 extends AProcessor {
|
||||||
|
process(message) {
|
||||||
|
log.info(`ExRoute1.process: ${this._label}, ${message}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.ExProc1 = ExProc1;
|
||||||
|
//# sourceMappingURL=processor.js.map
|
47
src/main.ts
47
src/main.ts
@ -1,41 +1,28 @@
|
|||||||
import * as log from './log'
|
import * as log from './log'
|
||||||
import * as mqtt from './mqttdispatcher'
|
import * as mqtt from './mqttdispatcher'
|
||||||
import * as callchain from './callchain'
|
import * as callchain from './callchain'
|
||||||
|
import * as plugintest1 from './plugintest1'
|
||||||
|
|
||||||
|
|
||||||
class Dispatcher {
|
log.info("Dispatcher starting")
|
||||||
private _mqttDispatcher: mqtt.MqttDispatcher
|
export const dispatcher = new mqtt.MqttDispatcher()
|
||||||
|
dispatcher.register('IoT/test', 'print1', (message: any) : any => {
|
||||||
|
log.info("Callback for IoT/test")
|
||||||
|
log.info(`message is ${message}`)
|
||||||
|
return `<<${message}>>`
|
||||||
|
})
|
||||||
|
dispatcher.register('IoT/test', 'print2', (message: any) : any => {
|
||||||
|
log.info("Callback for IoT/test")
|
||||||
|
log.info(`message is ${message}`)
|
||||||
|
return `<<${message}>>`
|
||||||
|
})
|
||||||
|
dispatcher.register('IoT/test', 'null1', mqtt.passThrough)
|
||||||
|
dispatcher.register('IoT/test', 'null2', mqtt.passThrough)
|
||||||
|
|
||||||
constructor() {
|
plugintest1.pluginTest1Start(dispatcher)
|
||||||
this._mqttDispatcher = new mqtt.MqttDispatcher()
|
|
||||||
|
|
||||||
this._mqttDispatcher.register('IoT/test', 'print1', (message: any) : any => {
|
|
||||||
log.info("Callback for IoT/test")
|
|
||||||
log.info(`message is ${message}`)
|
|
||||||
return `<<${message}>>`
|
|
||||||
})
|
|
||||||
this._mqttDispatcher.register('IoT/test', 'print2', (message: any) : any => {
|
|
||||||
log.info("Callback for IoT/test")
|
|
||||||
log.info(`message is ${message}`)
|
|
||||||
return `<<${message}>>`
|
|
||||||
})
|
|
||||||
this._mqttDispatcher.register('IoT/test', 'null1', mqtt.passThrough)
|
|
||||||
this._mqttDispatcher.register('IoT/test', 'null2', mqtt.passThrough)
|
|
||||||
}
|
|
||||||
|
|
||||||
exec() : void {
|
|
||||||
log.info("Dispatcher starting")
|
|
||||||
|
|
||||||
this._mqttDispatcher.exec()
|
|
||||||
|
|
||||||
log.info("Dispatcher running")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const dispatcher = new Dispatcher()
|
|
||||||
dispatcher.exec()
|
dispatcher.exec()
|
||||||
|
log.info("Dispatcher running")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -17,7 +17,12 @@ interface TopicHandler {
|
|||||||
last: callchain.AChainItem | undefined
|
last: callchain.AChainItem | undefined
|
||||||
}
|
}
|
||||||
|
|
||||||
export class MqttDispatcher {
|
export interface IDispatcher {
|
||||||
|
register(topic: string, label: string,
|
||||||
|
newChainItemOrCallbackFunc: callchain.AChainItem | callchain.ChainItemFunc) : void
|
||||||
|
}
|
||||||
|
|
||||||
|
export class MqttDispatcher implements IDispatcher {
|
||||||
private _mqttClient: Mqtt.Client
|
private _mqttClient: Mqtt.Client
|
||||||
private _mqttBrokerUrl: string
|
private _mqttBrokerUrl: string
|
||||||
private _topicHandlers: TopicHandler[]
|
private _topicHandlers: TopicHandler[]
|
||||||
|
16
src/plugintest1.ts
Normal file
16
src/plugintest1.ts
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
import * as log from './log'
|
||||||
|
import { IDispatcher } from './mqttdispatcher'
|
||||||
|
import * as processor from './processor'
|
||||||
|
|
||||||
|
|
||||||
|
var exRoute : processor.AProcessor = new processor.ExProc1('label1')
|
||||||
|
|
||||||
|
export function pluginTest1Start(dispatcher : IDispatcher) : void {
|
||||||
|
log.info("starting plugintest1")
|
||||||
|
|
||||||
|
dispatcher.register('IoT/test', "plugintest1", (message : any) : any => {
|
||||||
|
log.info(`plugintest1 runs: ${message}`)
|
||||||
|
exRoute.in(message)
|
||||||
|
return message
|
||||||
|
})
|
||||||
|
}
|
28
src/processor.ts
Normal file
28
src/processor.ts
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
import * as log from './log'
|
||||||
|
import * as events from 'events'
|
||||||
|
|
||||||
|
|
||||||
|
export abstract class AProcessor extends events.EventEmitter {
|
||||||
|
protected _label : string
|
||||||
|
|
||||||
|
constructor(label : string) {
|
||||||
|
super()
|
||||||
|
this._label = label
|
||||||
|
this.addListener('input', this.process)
|
||||||
|
log.info(`Processor object instanciated: ${this.constructor.name}, ${this._label}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
public in(message : any) : void {
|
||||||
|
log.info(`Routing ${message} to Processor class ${this.constructor.name}, ${this._label}`)
|
||||||
|
this.emit('input', message)
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract process(message : any) : void
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export class ExProc1 extends AProcessor {
|
||||||
|
protected process(message : any) : void {
|
||||||
|
log.info(`ExRoute1.process: ${this._label}, ${message}`)
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user