Commit | Line | Data |
---|---|---|
ee0f106b | 1 | import { ProtocolCommand, ProtocolRequestHandler, ProtocolVersion } from '../../../../types/UIProtocol'; |
8244f5f0 JB |
2 | |
3 | import AbstractUIService from '../AbstractUIService'; | |
4 | import BaseError from '../../../../exception/BaseError'; | |
5 | import WebSocketServer from '../../../WebSocketServer'; | |
6 | import logger from '../../../../utils/Logger'; | |
7 | ||
8 | export default class UIService extends AbstractUIService { | |
9 | private readonly messageHandlers: Map<ProtocolCommand, ProtocolRequestHandler>; | |
10 | ||
11 | constructor(webSocketServer: WebSocketServer) { | |
12 | super(webSocketServer); | |
13 | this.messageHandlers = new Map<ProtocolCommand, ProtocolRequestHandler>([ | |
ee0f106b | 14 | [ProtocolCommand.LIST_CHARGING_STATIONS, this.handleListChargingStations.bind(this)], |
8244f5f0 JB |
15 | [ProtocolCommand.START_TRANSACTION, this.handleStartTransaction.bind(this)], |
16 | [ProtocolCommand.STOP_TRANSACTION, this.handleStopTransaction.bind(this)], | |
17 | ]); | |
18 | } | |
19 | ||
ee0f106b | 20 | async handleMessage(version: ProtocolVersion, command: ProtocolCommand, payload: Record<string, unknown>): Promise<void> { |
8244f5f0 | 21 | let messageResponse: Record<string, unknown>; |
d8ff9d67 | 22 | if (this.messageHandlers.has(command)) { |
8244f5f0 JB |
23 | try { |
24 | // Call the method to build the response | |
25 | messageResponse = await this.messageHandlers.get(command)(payload); | |
26 | } catch (error) { | |
27 | // Log | |
1a3d7d3d | 28 | logger.error(this.webSocketServer.logPrefix() + ' Handle message error: %j', error); |
8244f5f0 JB |
29 | throw error; |
30 | } | |
31 | } else { | |
32 | // Throw exception | |
33 | throw new BaseError(`${command} is not implemented to handle message payload ${JSON.stringify(payload, null, 2)}`); | |
34 | } | |
35 | // Send the built response | |
ee0f106b JB |
36 | this.webSocketServer.broadcastToClients(this.buildProtocolMessage(version, command, messageResponse)); |
37 | } | |
38 | ||
39 | private handleListChargingStations(payload: Record<string, unknown>) { | |
40 | return this.chargingStations; | |
8244f5f0 JB |
41 | } |
42 | ||
43 | private handleStartTransaction(payload: Record<string, unknown>) { } | |
44 | private handleStopTransaction(payload: Record<string, unknown>) { } | |
45 | } |