Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@supertenant/collector / src / metrics / transmissionCycle.js
Size: Mime:
// (c) Copyright 2023 Supertenant Ltd. - all rights reserved.
// See LICENSE file in project root for license terms.
"use strict";const{clone,compression}=require("@supertenant/core").util;let logger;logger=require("../logger").getLogger("metrics/sender",newLogger=>{logger=newLogger});const resendFullDataEveryXTransmissions=300;let transmissionsSinceLastFullDataEmit=0,metrics,downstreamConnection,onSuccess,onError,previousTransmittedValue,transmissionTimeoutHandle,transmissionDelay=1e3,isActive=!1;function sendMetrics(){if(isActive){var newValueToTransmit=clone(metrics.gatherData());let payload;var isFullTransmission=transmissionsSinceLastFullDataEmit>resendFullDataEveryXTransmissions;payload=isFullTransmission?newValueToTransmit:compression(previousTransmittedValue,newValueToTransmit),downstreamConnection.sendMetrics(payload,onMetricsHaveBeenSent.bind(null,isFullTransmission,newValueToTransmit))}}function onMetricsHaveBeenSent(isFullTransmission,transmittedValue,error,responsePayload){error?(logger.error("Error received while trying to send snapshot data and metrics: %s",error.message),onError&&onError()):(previousTransmittedValue=transmittedValue,isFullTransmission?transmissionsSinceLastFullDataEmit=0:transmissionsSinceLastFullDataEmit++,onSuccess&&onSuccess(responsePayload),(transmissionTimeoutHandle=setTimeout(sendMetrics,transmissionDelay)).unref())}exports.init=function(config){transmissionDelay=config.metrics.transmissionDelay},exports.activate=function(_metrics,_downstreamConnection,_onSuccess,_onError){metrics=_metrics,downstreamConnection=_downstreamConnection,onSuccess=_onSuccess,onError=_onError,metrics?metrics.gatherData?"function"!=typeof metrics.gatherData?logger.error("metrics.gatherData is not a function."):downstreamConnection?downstreamConnection.sendMetrics?"function"!=typeof downstreamConnection.sendMetrics?logger.error("downstreamConnection.sendMetrics is not a function."):(isActive=!0,transmissionsSinceLastFullDataEmit=0,sendMetrics()):logger.error('Configured downstreamConnection has no attribute "sendMetrics".'):logger.error("No downstreamConnection has been set."):logger.error('Configured metrics have no attribute "gatherData".'):logger.error("No metrics have been set.")},exports.deactivate=function(){isActive=!1,previousTransmittedValue=void 0,clearTimeout(transmissionTimeoutHandle)};