UNPKG

proteus-js-client

Version:

Proteus JavaScript Client

123 lines (94 loc) 3.58 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _lodash = require('lodash.clone'); var _lodash2 = _interopRequireDefault(_lodash); var _long = require('long'); var _long2 = _interopRequireDefault(_long); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } // Implement https://github.com/opentracing/opentracing-javascript/blob/master/src%2Fspan.js var BasicSpan = function () { function BasicSpan(tracer, _ref) { var operationName = _ref.operationName, spanId = _ref.spanId, parent = _ref.parent, tags = _ref.tags, _ref$startTime = _ref.startTime, startTime = _ref$startTime === undefined ? Date.now() : _ref$startTime; _classCallCheck(this, BasicSpan); this._tracer = tracer; this.operationName = operationName; if (parent) { this.parent = parent; this.traceId = parent.traceId; this.spanId = spanId || BasicSpan.generateLongString(); this.parentId = parent.spanId; this.sampled = parent.sampled; this.baggage = (0, _lodash2.default)(parent.baggage); } else { this.parent = this; this.traceId = BasicSpan.generateTraceString(); this.spanId = spanId || BasicSpan.generateLongString(); this.parentId = this.spanId; this.sampled = this._tracer._isSampled(this); this.baggage = {}; } this.tags = (0, _lodash2.default)(tags); this.startTime = startTime; } BasicSpan.prototype.context = function context() { return this.parent; }; BasicSpan.prototype.tracer = function tracer() { return this._tracer; }; BasicSpan.prototype.setOperationName = function setOperationName(name) { this.operationName = name; }; BasicSpan.prototype.setTag = function setTag(key, value) { if (!this.tags) { this.tags = {}; } this.tags[key] = value; }; BasicSpan.prototype.addTags = function addTags(keyValuePairs) { for (var key in keyValuePairs) { this.setTag(key, keyValuePairs[key]); } }; BasicSpan.prototype.setBaggageItem = function setBaggageItem(key, value) { this.baggage[key] = value; }; BasicSpan.prototype.getBaggageItem = function getBaggageItem(key) { return this.baggage[key]; }; BasicSpan.prototype.log = function log(event) { var timestamp = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Date.now() * 1000; if (!this.logs) { this.logs = []; } this.logs.push({ event: event, timestamp: timestamp }); }; BasicSpan.prototype.finish = function finish() { var finishTime = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Date.now() * 1000; this.duration = finishTime - this.startTime; this._tracer._record(this); }; BasicSpan.generateLongString = function generateLongString() { // let buffer = uuid.v4(null, new Buffer(8)); var high = Math.floor(Math.random() * (Math.pow(2, 32) - 1)); var low = Math.floor(Math.random() * (Math.pow(2, 32) - 1)); return new _long2.default(low, high, true).toString(16).padStart(16, '0'); }; BasicSpan.generateTraceString = function generateTraceString() { // let buffer = uuid.v4(null, new Buffer(8)); return BasicSpan.generateLongString() + BasicSpan.generateLongString(); }; return BasicSpan; }(); exports.default = BasicSpan;