///
import { Request, RequestContext } from "../../api/request";
type StatsMaps = {
completedRequests: Map;
connections: Map;
failedRequests: Map;
ongoingRequests: Map;
};
type SerializableStats = {
completedRequests: Record;
connections: Record;
failedRequests: Record;
ongoingRequests: Record;
};
type StatsFrame = SerializableStats & {
timestamp: number;
};
type StatsResponse = {
hits: StatsFrame[];
total: number;
};
type LastStatsResponse = StatsFrame | (StatsMaps & {
timestamp: number;
});
/**
* @class Statistics
* @param {Kuzzle} kuzzle
*/
export default class Statistics {
private cacheKeyPrefix;
enabled: boolean;
ttl: number;
interval: number;
lastFrame: number | null;
timer: NodeJS.Timeout | null;
currentStats: StatsMaps;
private readonly logger;
constructor();
/**
* Start recording a new request
*
* @param {Request} request
*/
startRequest(request?: Request): void;
/**
* Mark an ongoing request as 'completed'
*
* @param {Request} request
*/
completedRequest(request?: Request): void;
/**
* Mark an ongoing request as 'completed'
*
* @param {Request} request
*/
failedRequest(request?: Request): void;
/**
* Register a newly created connection
*
* @param {RequestContext} requestContext
*/
newConnection(requestContext: RequestContext): void;
/**
* Removes a connection from the statistics
*
* @param {RequestContext} requestContext
*/
dropConnection(requestContext: RequestContext): void;
/**
* Gets stored statistics frames from a date
*
* @returns {Promise}
*/
getLastStats(): Promise;
/**
* Gets the last saved statistics frame from a date
*
* @param {Request} request
* @returns {Promise