X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2Fui-server%2FAbstractUIServer.ts;h=133389d60b3cf18e01ad04922332121bbf0d37da;hb=acfa5fd10b8489f5d85654e654356e65bfd1e0d0;hp=c21185fe2c890d8bc2f293dcb68ba756f1a517ef;hpb=1ca4a038d1b263b3b66a3c1872742bd98a696e75;p=e-mobility-charging-stations-simulator.git diff --git a/src/charging-station/ui-server/AbstractUIServer.ts b/src/charging-station/ui-server/AbstractUIServer.ts index c21185fe..133389d6 100644 --- a/src/charging-station/ui-server/AbstractUIServer.ts +++ b/src/charging-station/ui-server/AbstractUIServer.ts @@ -1,4 +1,5 @@ import { type IncomingMessage, Server, type ServerResponse } from 'node:http'; +import { type Http2Server, createServer } from 'node:http2'; import type { WebSocket } from 'ws'; @@ -6,6 +7,7 @@ import type { AbstractUIService } from './ui-services/AbstractUIService'; import { UIServiceFactory } from './ui-services/UIServiceFactory'; import { BaseError } from '../../exception'; import { + ApplicationProtocolVersion, AuthenticationType, type ChargingStationData, type ProcedureName, @@ -19,13 +21,24 @@ import { export abstract class AbstractUIServer { public readonly chargingStations: Map; - protected readonly httpServer: Server; + protected readonly httpServer: Server | Http2Server; protected readonly responseHandlers: Map; protected readonly uiServices: Map; public constructor(protected readonly uiServerConfiguration: UIServerConfiguration) { this.chargingStations = new Map(); - this.httpServer = new Server(); + switch (this.uiServerConfiguration.version) { + case ApplicationProtocolVersion.VERSION_11: + this.httpServer = new Server(); + break; + case ApplicationProtocolVersion.VERSION_20: + this.httpServer = createServer(); + break; + default: + throw new BaseError( + `Unsupported application protocol version ${this.uiServerConfiguration.version}`, + ); + } this.responseHandlers = new Map(); this.uiServices = new Map(); } @@ -33,7 +46,7 @@ export abstract class AbstractUIServer { public buildProtocolRequest( id: string, procedureName: ProcedureName, - requestPayload: RequestPayload + requestPayload: RequestPayload, ): ProtocolRequest { return [id, procedureName, requestPayload]; } @@ -46,14 +59,16 @@ export abstract class AbstractUIServer { this.chargingStations.clear(); } - public async sendRequestOnBroadcastChannel(request: ProtocolRequest): Promise { + public async sendInternalRequest(request: ProtocolRequest): Promise { const protocolVersion = ProtocolVersion['0.0.1']; this.registerProtocolVersionUIService(protocolVersion); - return this.uiServices.get(protocolVersion)?.requestHandler(request); + return this.uiServices + .get(protocolVersion) + ?.requestHandler(request) as Promise; } - public hasResponseHandler(uuid: string): boolean { - return this.responseHandlers.has(uuid); + public hasResponseHandler(id: string): boolean { + return this.responseHandlers.has(id); } protected startHttpServer(): void { @@ -104,6 +119,6 @@ export abstract class AbstractUIServer { public abstract logPrefix( moduleName?: string, methodName?: string, - prefixSuffix?: string + prefixSuffix?: string, ): string; }