节点在线、应用在线、配置在线使用令牌查询
大石头 authored at 2021-12-16 19:49:30
866.00 B
Stardust
/**
 * 自动埋点追踪器注册表。
 *
 * 模块级 Monkey Patch 是全局的,埋点执行时从注册表取最近的追踪器。
 */

'use strict';

const tracers = [];

/**
 * 注册追踪器。
 * @param {Object} tracer 追踪器
 * @returns {void}
 */
function register(tracer) {
    if (!tracer || tracers.indexOf(tracer) !== -1) return;
    tracers.push(tracer);
}

/**
 * 注销追踪器。
 * @param {Object} tracer 追踪器
 * @returns {void}
 */
function unregister(tracer) {
    const index = tracers.indexOf(tracer);
    if (index !== -1) tracers.splice(index, 1);
}

/**
 * 获取当前用于自动埋点的追踪器(后注册者优先)。
 * @returns {Object|null} 追踪器
 */
function getTracer() {
    return tracers.length > 0 ? tracers[tracers.length - 1] : null;
}

module.exports = {
    register,
    unregister,
    getTracer,
};