X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Ftypes%2FUIProtocol.ts;h=4b96262bc3126afaf3d6ad8693758b9f09f23dfa;hb=9d73266c8bb85d7e2bc1fab9954a76910fd689eb;hp=4344c0d642df3e7ab229750b7b71be40455389d3;hpb=178ac666dd23c1fe11b2b800afeafaa4e8dd7a1c;p=e-mobility-charging-stations-simulator.git diff --git a/src/types/UIProtocol.ts b/src/types/UIProtocol.ts index 4344c0d6..4b96262b 100644 --- a/src/types/UIProtocol.ts +++ b/src/types/UIProtocol.ts @@ -1,21 +1,60 @@ -import { JsonType } from './JsonType'; +import type { JsonObject } from './JsonType'; +import type { BroadcastChannelResponsePayload } from './WorkerBroadcastChannel'; export enum Protocol { UI = 'ui', } +export enum ApplicationProtocol { + HTTP = 'http', + WS = 'ws', +} + +export enum AuthenticationType { + BASIC_AUTH = 'basic-auth', +} + export enum ProtocolVersion { '0.0.1' = '0.0.1', } -export enum ProtocolCommand { +export type ProtocolRequest = [string, ProcedureName, RequestPayload]; +export type ProtocolResponse = [string, ResponsePayload]; + +export type ProtocolRequestHandler = ( + uuid?: string, + payload?: RequestPayload +) => undefined | Promise | ResponsePayload | Promise; + +export enum ProcedureName { LIST_CHARGING_STATIONS = 'listChargingStations', + START_CHARGING_STATION = 'startChargingStation', + STOP_CHARGING_STATION = 'stopChargingStation', + START_SIMULATOR = 'startSimulator', + STOP_SIMULATOR = 'stopSimulator', + OPEN_CONNECTION = 'openConnection', + CLOSE_CONNECTION = 'closeConnection', START_TRANSACTION = 'startTransaction', STOP_TRANSACTION = 'stopTransaction', + START_AUTOMATIC_TRANSACTION_GENERATOR = 'startAutomaticTransactionGenerator', + STOP_AUTOMATIC_TRANSACTION_GENERATOR = 'stopAutomaticTransactionGenerator', + STATUS_NOTIFICATION = 'statusNotification', + HEARTBEAT = 'heartbeat', } -export type ProtocolRequest = [ProtocolCommand, JsonType]; +export interface RequestPayload extends JsonObject { + hashIds?: string[]; + connectorIds?: number[]; +} -export type ProtocolRequestHandler = ( - payload: JsonType -) => void | Promise | JsonType | Promise; +export enum ResponseStatus { + SUCCESS = 'success', + FAILURE = 'failure', +} + +export interface ResponsePayload extends JsonObject { + status: ResponseStatus; + hashIdsSucceeded?: string[]; + hashIdsFailed?: string[]; + responsesFailed?: BroadcastChannelResponsePayload[]; +}