UNPKG

@sap/opentelemetry-exporter-for-sap-cloud-logging

Version:
49 lines 2.02 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MultiSpanExporter = void 0; const core_1 = require("@opentelemetry/core"); const api_1 = require("@opentelemetry/api"); class MultiSpanExporter { constructor(className = "MultiSpanExporter") { this.spanExporters = []; this.diagLogger = api_1.diag.createComponentLogger({ namespace: className }); } add(...exporters) { this.spanExporters.push(...exporters); } export(spans, resultCallback) { let promises = this.spanExporters.map((exporter) => new Promise((resolve) => exporter.export(spans, (result) => { if (result.code == core_1.ExportResultCode.FAILED && result.error) { this.diagLogger.warn("Error returned by the export.", result.error); } resolve(result); }))); Promise.all(promises).then((results) => resultCallback({ code: results.every(result => result.code == core_1.ExportResultCode.SUCCESS) ? core_1.ExportResultCode.SUCCESS : core_1.ExportResultCode.FAILED })); } shutdown() { let promises = this.spanExporters.map((exporter) => exporter.shutdown()); let overallPromise = new Promise((resolve, reject) => { Promise.all(promises).then(() => { resolve(); }).catch((reason) => { reject(reason); }); }); return overallPromise; } forceFlush() { let promises = this.spanExporters.map((exporter) => { var _a; return (_a = exporter.forceFlush) === null || _a === void 0 ? void 0 : _a.call(exporter); }); let overallPromise = new Promise((resolve, reject) => { Promise.all(promises).then(() => { resolve(); }).catch((reason) => { reject(reason); }); }); return overallPromise; } } exports.MultiSpanExporter = MultiSpanExporter; //# sourceMappingURL=multiSpanExporter.js.map