/*!
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License.
*/
///
import { Guid } from '../..';
import { ExponentialMovingAverage, Message, NetworkStatsReport, QueuedPromise, TrackingClock } from '../../internal';
/**
* @hidden
* Class for tracking connection quality.
*/
export declare class ConnectionQuality {
private _latencyMs;
private _trackingClock;
/**
* Calculates a moving average of latency on the connection.
*/
get latencyMs(): ExponentialMovingAverage;
/**
* If this is a client, tracks last known "server time" and can estimate current server time.
* For a most accurate estimate, subtract the value of latency from the current server time.
*/
get trackingClock(): TrackingClock;
}
/**
* Interface for sending and receiving messages with a client.
*/
export interface Connection {
readonly quality: ConnectionQuality;
readonly promises: Map;
/** A snapshot of this connection's bandwidth usage */
readonly statsReport: NetworkStatsReport;
/**
* Registers a handler for the 'send' or 'recv' events. Called when a new message is to be sent.
*/
on(event: 'send' | 'recv', listener: (message: Message, serializedMessage?: Buffer) => void): void;
/**
* Registers a handler for the 'close' event. Called when the connection was closed.
*/
on(event: 'close', listener: () => void): void;
/**
* Registers a handler for the 'error' event. Called when the connection experiences an error.
*/
on(event: 'error', listener: (err: any) => void): void;
/**
* Unregisters the handler for these events.
*/
off(event: 'send' | 'recv', listener: (message: Message, serializedMessage?: Buffer) => void): void;
off(event: 'close', listener: () => void): void;
off(event: 'error', listener: (err: any) => void): void;
/**
* Close the connection.
*/
close(): void;
/**
* Sends a message.
*/
send(message: Message, serializedMessage?: Buffer): void;
/**
* Receives a message.
*/
recv(message: Message, serializedMessage?: Buffer): void;
}
//# sourceMappingURL=connection.d.ts.map