proteus-js-client
Version:
Proteus JavaScript Client
123 lines (94 loc) • 3.58 kB
JavaScript
'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;