All files / lib/internal http.js

100% Statements 55/55
100% Branches 9/9
100% Functions 4/4
100% Lines 55/55

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 5611x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 24869x 24869x 24869x 24869x 11x 489x 489x 489x 489x 489x 11x 36x 36x 36x 11x 12355x 12355x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 12355x 11x 11x 11x 11x 11x 11x 11x  
'use strict';
 
const {
  Symbol,
  Date,
  DatePrototypeGetMilliseconds,
  DatePrototypeToUTCString,
} = primordials;
 
const { setUnrefTimeout } = require('internal/timers');
 
const { InternalPerformanceEntry } = require('internal/perf/performance_entry');
 
const {
  enqueue,
  hasObserver,
} = require('internal/perf/observe');
 
let utcCache;
 
function utcDate() {
  if (!utcCache) cache();
  return utcCache;
}
 
function cache() {
  const d = new Date();
  utcCache = DatePrototypeToUTCString(d);
  setUnrefTimeout(resetCache, 1000 - DatePrototypeGetMilliseconds(d));
}
 
function resetCache() {
  utcCache = undefined;
}
 
function emitStatistics(statistics) {
  if (!hasObserver('http') || statistics == null) return;
  const startTime = statistics.startTime;
  const diff = process.hrtime(startTime);
  const entry = new InternalPerformanceEntry(
    'HttpRequest',
    'http',
    startTime[0] * 1000 + startTime[1] / 1e6,
    diff[0] * 1000 + diff[1] / 1e6,
    undefined,
  );
  enqueue(entry);
}
 
module.exports = {
  kOutHeaders: Symbol('kOutHeaders'),
  kNeedDrain: Symbol('kNeedDrain'),
  utcDate,
  emitStatistics,
};