UNPKG

lavva.exalushome

Version:

Library implementing communication and abstraction layers for ExalusHome system

79 lines (78 loc) 3.58 kB
import * as signalR from "@microsoft/signalr"; import { IDataFrame } from "../DataFrame"; import { ConnectionResult, IExalusConnectionService, AuthorizationInfo, ConnectionState, StreamHandler } from "./IExalusConnectionService"; import { ITypedEvent } from "../TypedEvent"; export declare class SignalrLogger implements signalR.ILogger { private readonly _log; log(level: signalR.LogLevel, message: string): void; } export declare class ExalusConnectionService implements IExalusConnectionService { private static readonly PING_INTERVAL_MS; private static readonly MAX_CONSECUTIVE_PING_FAILURES; private static readonly SERVER_TIMOUT_MS; static SignalRLogLevel: signalR.LogLevel; private _connection?; private _connectTask; private _pingTimerId; private _consecutivePingFailures; private _disconnectedOnPurpose; private _address; private _serversBrokerAddress; private readonly _serversBrokerAddressList; private _allBrokersChecked; private readonly _packetsBrokerServers; private _serialId?; private _PIN?; private _lastReceivedPacket; private _everConnected; private readonly _pendingRequests; private readonly _log; private _controllerConfiguration; private _cache; private _session; private readonly _dataReceivedEvent; private readonly _pongReceivedEvent; private readonly _authorizationReceivedEvent; private readonly _registrationReceivedEvent; private readonly _streamStartedEvent; private readonly _connectionStateChangedEvent; private readonly _errorOccuredEvent; static readonly ServiceName = "ExalusConnectionService"; GetServiceName(): string; GetAuthorizationInfo(): AuthorizationInfo | null; GetControllerSerialNumber(): string | undefined; GetControllerPin(): string | undefined; SetServersBrokerAddress(a: string): void; SetDefaultPacketsBrokerAddress(a: string): void; EnablePacketsLogging(): void; DisablePacketsLogging(): void; SubscribeTo<T>(resourceId: string, handler: (d: IDataFrame<T>) => void): () => void; GetServerAddressAsync(): Promise<string | null>; private rotateServersBroker; ConnectAsync(address: string): Promise<ConnectionResult>; ConnectAndAuthorizeAsync(info: AuthorizationInfo): Promise<ConnectionResult>; AuthorizeAsync(info: AuthorizationInfo): Promise<boolean>; IsConnected(): boolean; DisconnectAsync(): Promise<void>; SendAsync(dataFrame: IDataFrame<any>, logTx?: boolean): Promise<boolean>; SendAndWaitForResponseAsync<T>(dataFrame: IDataFrame<any>, timeout: number, useCache: boolean, logTransmission?: boolean): Promise<IDataFrame<T>>; SendAndHandleResponseAsync<T>(dataFrame: IDataFrame<any>, timeout: number, dataHandler: (r: IDataFrame<T>) => void, logTransmission?: boolean): Promise<void>; SendAndHandleStreamAsync<T>(dataFrame: IDataFrame<any>, streamHandler: StreamHandler<T>, logTransmission?: boolean): Promise<void>; PingControllerAsync(): Promise<boolean>; OnDataReceivedEvent(): ITypedEvent<any>; OnConnectionStateChangedEvent(): ITypedEvent<ConnectionState>; OnErrorOccuredEvent(): ITypedEvent<[string, string]>; private serialisedConnect; private connectCore; private waitForReconnection; private initializeServices; private wireConnectionEvents; private startPingLoop; private pingOnce; private validateConnectionToController; private _tryReconnect; private _onVisibility; private _onHidden; private _onVisible; private cleanup; }