Adding new Timeoutsettings.

This commit is contained in:
Martin Karkowski 2020-11-04 17:33:25 +01:00
parent bedc93b923
commit 2ef9caba20
2 changed files with 90 additions and 12 deletions

View File

@ -1,6 +1,6 @@
import { EventEmitter } from "events";
import { Logger } from "winston";
import { IAvailableInstanceGenerators, IAvailableServicesMsg, IAvailableTopicsMsg, ICommunicationInterface, IExternalEventMsg, IRequestTaskMsg, IResponseTaskMsg } from "../types/communication.interface";
import { IAvailableInstanceGeneratorsMsg, IAvailableServicesMsg, IAvailableTopicsMsg, ICommunicationInterface, IExternalEventMsg, IRequestTaskMsg, IResponseTaskMsg, ITaskCancelationMsg } from "../types/communication.interface";
/**
* A Communication Layer for the Dispatchers.
@ -19,12 +19,28 @@ export class EventLayer implements ICommunicationInterface {
){
}
async onTaskCancelation(cb: (msg: ITaskCancelationMsg) => void) {
this._emitter.on('cancel',cb);
}
async emitNewInstanceGeneratorsAvailable(generators: IAvailableInstanceGenerators) {
async emitTaskCancelation(msg: ITaskCancelationMsg) {
this._emitter.emit('cancel', msg);
}
async onAurevoir(cb: (dispatcher: string) => void) {
this._emitter.on('aurevoir', cb);
}
async emitAurevoir(dispatcher: string) {
this._emitter.emit('aurevoir', dispatcher);
}
async emitNewInstanceGeneratorsAvailable(generators: IAvailableInstanceGeneratorsMsg) {
this._emitter.emit('generators',generators);
}
async onNewInstanceGeneratorsAvailable(cb: (generators: IAvailableInstanceGenerators) => void) {
async onNewInstanceGeneratorsAvailable(cb: (generators: IAvailableInstanceGeneratorsMsg) => void) {
this._emitter.on('generators',cb)
}

View File

@ -2,7 +2,7 @@
* @author Martin Karkowski
* @email m.karkowski@zema.de
* @create date 2020-10-12 18:31:54
* @modify date 2020-10-14 07:52:52
* @modify date 2020-11-04 16:59:44
* @desc [description]
*/
@ -152,25 +152,80 @@ export interface ICommunicationInterface {
*/
emitBonjour(dispatcher: string): Promise<void>;
/**
* Function, to subscribe to "Bonjour"-Messages of the Dispatcher Dispatchers.
*
* @param {(dispatcher: string) => void} cb The callback which should be called.
* @memberof ICommunicationInterface
*/
onAurevoir(cb: (dispatcher: string) => void): Promise<void>;
/**
* Function to emit a Bonjour message.
*
* @param {string} dispatcher The ID of the new Dispatcher.
* @memberof ICommunicationInterface
*/
emitAurevoir(dispatcher: string): Promise<void>;
/**
* Register on cancelation events.
*
* @return {*} {Promise<void>}
* @memberof ICommunicationInterface
*/
onTaskCancelation(cb: (msg: ITaskCancelationMsg) => void): Promise<void>;
/**
* Function to emit a Task cancelation.
*
* @param {ITaskCancelationMsg} msg
* @return {*} {Promise<void>}
* @memberof ICommunicationInterface
*/
emitTaskCancelation(msg: ITaskCancelationMsg): Promise<void>;
/**
* Function to Emit a message, containing information of new
* Constructors.
*
* @param {IAvailableInstanceGenerators} creators
* @param {IAvailableInstanceGeneratorsMsg} creators
* @memberof ICommunicationInterface
*/
emitNewInstanceGeneratorsAvailable(creators: IAvailableInstanceGenerators): Promise<void>;
emitNewInstanceGeneratorsAvailable(creators: IAvailableInstanceGeneratorsMsg): Promise<void>;
/**
* Function to show, which instances could be created.
*
* @param {(creators: IAvailableInstanceGenerators) => void} cb
* @param {(creators: IAvailableInstanceGeneratorsMsg) => void} cb
* @memberof ICommunicationInterface
*/
onNewInstanceGeneratorsAvailable(cb: (creators: IAvailableInstanceGenerators) => void);
onNewInstanceGeneratorsAvailable(cb: (creators: IAvailableInstanceGeneratorsMsg) => void);
}
export type IAvailableInstanceGenerators = {
export type ITaskCancelationMsg = {
/**
* The Id of the Dispatcher
*
* @type {string}
*/
dispatcher: string,
/**
* ID of the canceled Task
*
* @type {string}
*/
taskId: string,
/**
* Reason, why the Task has been canceled.
*
* @type {*}
*/
reason: any,
}
export type IAvailableInstanceGeneratorsMsg = {
/**
* The Id of the Dispatcher
*
@ -186,19 +241,19 @@ export type IAvailableInstanceGenerators = {
generators: string[]
}
export interface IInstanceDescription {
export interface IInstanceDescriptionMsg {
type: string,
description: INopeModuleDescription
}
export interface IInstanceCreation {
export interface IInstanceCreationMsg {
type: string,
identifier: string,
params: any,
dispatcherID: string,
}
export interface IInstanceRemoval {
export interface IInstanceRemovalMsg {
identifier: string,
dispatcherID: string,
}
@ -348,6 +403,13 @@ export type ICallOptions = {
* @type {string}
*/
resultSink: string
/**
* A User Provided Timeout of the call. After the timeout has been
* ellapsed, the task is cancelled with a timeout error.
*
* @type {number}
*/
timeout?: number
}
export type IResponseTaskMsg = {