in packages/core/lib/segments/attributes/trace_id.js [33:68]
static FromString(rawID) {
const DELIMITER = '-';
var traceID = new TraceID();
var version, timestamp;
if (!rawID || typeof rawID !== 'string') {
logger.getLogger().error('Empty or non-string trace ID provided');
return traceID;
}
const parts = rawID.trim().split(DELIMITER);
if (parts.length !== 3) {
logger.getLogger().error('Unrecognized trace ID format');
return traceID;
}
version = parseInt(parts[0]);
if (isNaN(version) || version < 1) {
logger.getLogger().error('Trace ID version must be positive integer');
return traceID;
}
timestamp = parseInt(parts[1], 16).toString(16);
if (timestamp === 'NaN') {
logger.getLogger().error('Trace ID timestamp must be a hex-encoded value');
return traceID;
} else {
timestamp = timestamp.padStart(8, '0');
}
traceID.version = version;
traceID.timestamp = timestamp;
traceID.id = parts[2];
return traceID;
}