| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- const Histogram_1 = require("./Histogram");
- const encoding_1 = require("./encoding");
- const formatters_1 = require("./formatters");
- const HISTOGRAM_LOG_FORMAT_VERSION = "1.3";
- const timeFormatter = formatters_1.floatFormatter(5, 3);
- class HistogramLogWriter {
- constructor(log) {
- this.log = log;
- /**
- * Base time to subtract from supplied histogram start/end timestamps when
- * logging based on histogram timestamps.
- * Base time is expected to be in msec since the epoch, as histogram start/end times
- * are typically stamped with absolute times in msec since the epoch.
- */
- this.baseTime = 0;
- }
- /**
- * Output an interval histogram, with the given timestamp information and the [optional] tag
- * associated with the histogram, using a configurable maxValueUnitRatio. (note that the
- * specified timestamp information will be used, and the timestamp information in the actual
- * histogram will be ignored).
- * The max value reported with the interval line will be scaled by the given maxValueUnitRatio.
- * @param startTimeStampSec The start timestamp to log with the interval histogram, in seconds.
- * @param endTimeStampSec The end timestamp to log with the interval histogram, in seconds.
- * @param histogram The interval histogram to log.
- * @param maxValueUnitRatio The ratio by which to divide the histogram's max value when reporting on it.
- */
- outputIntervalHistogram(histogram, startTimeStampSec = (histogram.startTimeStampMsec - this.baseTime) / 1000, endTimeStampSec = (histogram.endTimeStampMsec - this.baseTime) / 1000, maxValueUnitRatio = 1000) {
- const base64 = encoding_1.encodeIntoCompressedBase64(histogram);
- const start = timeFormatter(startTimeStampSec);
- const duration = timeFormatter(endTimeStampSec - startTimeStampSec);
- const max = timeFormatter(histogram.maxValue / maxValueUnitRatio);
- const lineContent = `${start},${duration},${max},${base64}\n`;
- if (histogram.tag && histogram.tag !== Histogram_1.NO_TAG) {
- this.log(`Tag=${histogram.tag},${lineContent}`);
- }
- else {
- this.log(lineContent);
- }
- }
- /**
- * Log a comment to the log.
- * Comments will be preceded with with the '#' character.
- * @param comment the comment string.
- */
- outputComment(comment) {
- this.log(`#${comment}\n`);
- }
- /**
- * Log a start time in the log.
- * @param startTimeMsec time (in milliseconds) since the absolute start time (the epoch)
- */
- outputStartTime(startTimeMsec) {
- this.outputComment(`[StartTime: ${formatters_1.floatFormatter(5, 3)(startTimeMsec / 1000)} (seconds since epoch), ${new Date(startTimeMsec)}]\n`);
- }
- /**
- * Output a legend line to the log.
- */
- outputLegend() {
- this.log('"StartTimestamp","Interval_Length","Interval_Max","Interval_Compressed_Histogram"\n');
- }
- /**
- * Output a log format version to the log.
- */
- outputLogFormatVersion() {
- this.outputComment("[Histogram log format version " + HISTOGRAM_LOG_FORMAT_VERSION + "]");
- }
- }
- exports.default = HistogramLogWriter;
- //# sourceMappingURL=HistogramLogWriter.js.map
|