Source: tracker/request-tracker.js

"use strict";

/**
 * Tracks request execution for a {@link Client}.
 *
 * A {@link RequestTracker} can be configured in the client options. The `Client` will execute
 * {@link RequestTracker#onSuccess} or {@link RequestTracker#onError} for every query or batch
 * executed (QUERY, EXECUTE and BATCH requests).
 * @interface
 * @alias module:tracker~RequestTracker
 */
class RequestTracker {
    /**
     * Invoked each time a query or batch request succeeds.
     * @param {Host} host The node that acted as coordinator of the request.
     * @param {String|Array} query In the case of prepared or unprepared query executions, the provided
     * query string. For batch requests, an Array containing the queries and parameters provided.
     * @param {Array|Object|null} parameters In the case of prepared or unprepared query executions, the provided
     * parameters.
     * @param {ExecutionOptions} executionOptions The information related to the execution of the request.
     * @param {Number} requestLength Length of the body of the request.
     * @param {Number} responseLength Length of the body of the response.
     * @param {Array<Number>} latency An array containing [seconds, nanoseconds] tuple, where nanoseconds is the
     * remaining part of the real time that can't be represented in second precision (see `process.hrtime()`).
     */
    onSuccess(
        host,
        query,
        parameters,
        executionOptions,
        requestLength,
        responseLength,
        latency,
    ) {}

    /**
     * Invoked each time a query or batch request fails.
     * @param {Host} host The node that acted as coordinator of the request.
     * @param {String|Array} query In the case of prepared or unprepared query executions, the provided
     * query string. For batch requests, an Array containing the queries and parameters provided.
     * @param {Array|Object|null} parameters In the case of prepared or unprepared query executions, the provided
     * parameters.
     * @param {ExecutionOptions} executionOptions The information related to the execution of the request.
     * @param {Number} requestLength Length of the body of the request. When the failure occurred before the request was
     * written to the wire, the length will be `0`.
     * @param {Error} err The error that caused that caused the request to fail.
     * @param {Array<Number>} latency An array containing [seconds, nanoseconds] tuple, where nanoseconds is the
     * remaining part of the real time that can't be represented in second precision (see `process.hrtime()`).
     */
    onError(
        host,
        query,
        parameters,
        executionOptions,
        requestLength,
        err,
        latency,
    ) {}

    /**
     * Invoked when the Client is being shutdown.
     */
    shutdown() {}
}

module.exports = RequestTracker;