2021-03-24 06:50:36 +00:00
|
|
|
/**
|
|
|
|
* @author Martin Karkowski
|
|
|
|
* @email m.karkowski@zema.de
|
|
|
|
* @create date 2021-03-23 07:30:19
|
2021-04-12 05:09:47 +00:00
|
|
|
* @modify date 2021-04-09 09:28:02
|
2021-03-24 06:50:36 +00:00
|
|
|
* @desc [description]
|
|
|
|
*/
|
|
|
|
|
|
|
|
import { generateId } from "../helpers/idMethods";
|
|
|
|
import { LoggerLevel } from "../logger/nopeLogger";
|
|
|
|
import { ICommunicationBridge } from "../types/nope/nopeCommunication.interface";
|
|
|
|
import { Bridge } from "./bridge";
|
2021-04-12 05:09:47 +00:00
|
|
|
import { IoSocketMirrorClient } from "./mirrors/ioSocketMirrorClient";
|
2021-03-24 06:50:36 +00:00
|
|
|
|
|
|
|
// Define the Valid Layers
|
2021-09-03 05:42:37 +00:00
|
|
|
export type validLayerOrMirror = "event" | "io-client";
|
2021-03-24 06:50:36 +00:00
|
|
|
|
|
|
|
export const validLayers = {
|
|
|
|
event: Bridge,
|
2021-12-04 07:25:26 +00:00
|
|
|
"io-client": IoSocketMirrorClient,
|
2021-03-24 06:50:36 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
export const layerDefaultParameters = {
|
2021-12-04 07:25:26 +00:00
|
|
|
"io-client": "http://localhost:7000",
|
2021-03-24 06:50:36 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Function, that will create a Bridge, based on the provided function.
|
|
|
|
* Based on the parameter "layer", a corresponding layer or mirror will
|
|
|
|
* be added to the bridge. You can provide custom parameters using the
|
|
|
|
* parameter "parameter". This will receive either the uri or ports.
|
|
|
|
* Additionally you are able to assign a log-level to the bridge.
|
|
|
|
*
|
|
|
|
* @export
|
|
|
|
* @param {validLayerOrMirror} layer the layer to add
|
|
|
|
* @param {(number | string)} [parameter=null] the parameter required for the additonal layer / mirror
|
|
|
|
* @param {LoggerLevel} level the level of the debugger
|
|
|
|
* @return {*} {ICommunicationBridge}
|
|
|
|
*/
|
|
|
|
export function getLayer(
|
|
|
|
layer: validLayerOrMirror,
|
|
|
|
parameter: number | string = null,
|
|
|
|
level: LoggerLevel
|
|
|
|
): ICommunicationBridge {
|
|
|
|
// Create the Bridge
|
|
|
|
const communicationBridge = new Bridge(generateId(), "communication", level);
|
|
|
|
|
|
|
|
// Assign the Default Setting for the Channel.
|
|
|
|
const params = parameter !== null ? parameter : layerDefaultParameters[layer];
|
|
|
|
|
|
|
|
switch (layer) {
|
|
|
|
case "event":
|
|
|
|
break;
|
2021-09-03 05:42:37 +00:00
|
|
|
case "io-client":
|
|
|
|
communicationBridge.addMirror(
|
|
|
|
new IoSocketMirrorClient(params, level),
|
|
|
|
true
|
|
|
|
);
|
2021-08-04 12:56:37 +00:00
|
|
|
break;
|
2021-03-24 06:50:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// Return the Bridge
|
2021-09-02 06:20:26 +00:00
|
|
|
return communicationBridge as any as ICommunicationBridge;
|
2021-03-24 06:50:36 +00:00
|
|
|
}
|