Lorenzob's picture
Upload folder using huggingface_hub
19605ab verified
raw
history blame
1.8 kB
// Just emits "rotate" events at the right time.
// Does not know about a rotating file stream.
'use strict';
var assert = require('assert');
var EventEmitter = require('events').EventEmitter;
var _ = require('lodash');
var fs = require('fs');
var optionParser = require('./optionParser');
var nextRotTime = require('./nextrotationtime');
var _DEBUG = false;
function InitialPeriodRotateTrigger(options) {
var base = new EventEmitter;
var periodNum = 1;
var periodScope = 'd';
var rotatingoldfiles = true;
function shutdown() {
}
function checkIfRotationNeeded(birthtime, now) {
var nextRot = birthtime;
var lastRot = birthtime;
while (nextRot < now) {
lastRot = nextRot;
nextRot = nextRotTime(lastRot, periodScope, periodNum);
}
return { needsRotation: lastRot != birthtime, rotateTo: lastRot };
}
function newFile(data) {
if (rotatingoldfiles) {
// First setup, see if the file is old and needs rotating
rotatingoldfiles = false;
var rotation = checkIfRotationNeeded(data.stats.birthtime.getTime(), new Date().getTime());
if (rotation.needsRotation) {
// The current file is old enough to need a rotation.
base.emit('rotate', {date: rotation.rotateTo});
}
}
}
function logWrite() {
// Do nothing
}
var parsed = optionParser.parsePeriod(options.period);
periodScope = parsed.periodScope;
periodNum = parsed.periodNum;
return _.extend({}, {
newFile: newFile,
logWrite: logWrite,
shutdown: shutdown,
checkIfRotationNeeded: checkIfRotationNeeded},
base);
};
module.exports = InitialPeriodRotateTrigger;