processTraceData: function processTraceData()

in packages/core/lib/utils.js [211:246]


  processTraceData: function processTraceData(traceData) {
    var amznTraceData = {};
    var data = {};
    var reservedKeywords = ['root', 'parent', 'sampled', 'self'];
    var remainingBytes = 256;

    if (!(typeof traceData === 'string' && traceData)) {
      return amznTraceData;
    }

    traceData.split(';').forEach(function(header) {
      if (!header) {
        return;
      }

      var pair = header.split('=');

      if (pair[0] && pair[1]) {
        let key = pair[0].trim();
        let value = pair[1].trim();
        let lowerCaseKey = key.toLowerCase();
        let reserved = reservedKeywords.indexOf(lowerCaseKey) !== -1;

        if (reserved) {
          amznTraceData[lowerCaseKey] = value;
        } else if (!reserved && remainingBytes - (lowerCaseKey.length + value.length) >= 0) {
          data[key] = value;
          remainingBytes -= (key.length + value.length);
        }
      }
    });

    amznTraceData['data'] = data;

    return amznTraceData;
  },