packages/core/lib/segments/segment_utils.js (44 lines of code) (raw):

const { safeParseInt } = require('../utils'); var logger = require('../logger'); var DEFAULT_STREAMING_THRESHOLD = 100; var utils = { streamingThreshold: DEFAULT_STREAMING_THRESHOLD, getCurrentTime: function getCurrentTime() { return Date.now() / 1000; }, setOrigin: function setOrigin(origin) { this.origin = origin; }, setPluginData: function setPluginData(pluginData) { this.pluginData = pluginData; }, setSDKData: function setSDKData(sdkData) { this.sdkData = sdkData; }, setServiceData: function setServiceData(serviceData) { this.serviceData = serviceData; }, /** * Overrides the default streaming threshold (100). * The threshold represents the maximum number of subsegments on a single segment before * the SDK beings to send the completed subsegments out of band of the main segment. * Reduce this threshold if you see the 'Segment too large to send' error. * @param {number} threshold - The new threshold to use. * @memberof AWSXRay */ setStreamingThreshold: function setStreamingThreshold(threshold) { if (isFinite(threshold) && threshold >= 0) { utils.streamingThreshold = threshold; logger.getLogger().debug('Subsegment streaming threshold set to: ' + threshold); } else { logger.getLogger().error('Invalid threshold: ' + threshold + '. Must be a whole number >= 0.'); } }, getStreamingThreshold: function getStreamingThreshold() { return utils.streamingThreshold; }, /** * Parses an HTTP response object to return an X-Ray compliant HTTP response object. * @param {http.ServerResponse} res * @returns {Object} - X-Ray response object to be added to (sub)segment */ getHttpResponseData: (res) => { const ret = {}; if (!res) { return ret; } const status = safeParseInt(res.statusCode); if (status !== 0) { ret.status = status; } if (res.headers && res.headers['content-length']) { ret.content_length = safeParseInt(res.headers['content-length']); } return ret; }, getJsonStringifyReplacer: () => (_, value) => { if (typeof value === 'bigint') { return value.toString(); } return value; } }; module.exports = utils;