lavva.exalushome
Version:
Library implementing communication and abstraction layers for ExalusHome system
79 lines (78 loc) • 3.58 kB
TypeScript
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;
}