@openhps/core
Version:
Open Hybrid Positioning System - Core component
106 lines • 3.65 kB
JavaScript
;
var TimeService_1;
Object.defineProperty(exports, "__esModule", { value: true });
exports.TimeService = void 0;
const tslib_1 = require("tslib");
const Service_1 = require("./Service");
const utils_1 = require("../utils");
const decorators_1 = require("../data/decorators");
/**
* Time service for retrieving the current time.
*/
let TimeService = TimeService_1 = class TimeService extends Service_1.Service {
constructor(timeCallback, unit = utils_1.TimeUnit.MILLISECOND) {
super();
this._timeCallback = timeCallback;
this._timeUnit = unit;
this.uid = this.constructor.name;
// Specify the default time callback used by class initializers
if (!TimeService_1._defaultTimeCallback) {
TimeService_1.initialize();
}
// If time callback is undefined, use the default
if (!this._timeCallback) {
this._timeCallback = TimeService_1.now;
this._timeUnit = TimeService_1.getUnit();
}
else {
TimeService_1._defaultTimeCallback = timeCallback;
TimeService_1._defaultUnit = unit;
}
}
get isDefault() {
return TimeService_1._defaultTimeCallback === this._timeCallback;
}
set isDefault(value) {
if (value) {
TimeService_1._defaultTimeCallback = this._timeCallback;
TimeService_1._defaultUnit = this._timeUnit;
}
}
static initialize() {
TimeService_1._defaultTimeCallback = Date.now;
TimeService_1._defaultUnit = utils_1.TimeUnit.MILLISECOND;
// Specify the default time callback used by class initializers
try {
const microtime = require('microtime'); // eslint-disable-line
// Check if function exists, needed for webpack
if (microtime.now) {
TimeService_1._defaultTimeCallback = microtime.now;
TimeService_1._defaultUnit = utils_1.TimeUnit.MICROSECOND;
}
}
catch (ex) {
return;
}
}
/**
* Get the current time
* @returns {number} Current time
*/
getTime() {
return this._timeCallback();
}
/**
* Get the time unit
* @returns {TimeUnit} Unit of time service
*/
getUnit() {
return this._timeUnit;
}
/**
* Get the current time
* @returns {number} Current time in a specific unit
*/
static now() {
if (!TimeService_1._defaultTimeCallback) {
TimeService_1.initialize();
}
return TimeService_1._defaultTimeCallback();
}
static getUnit() {
if (!TimeService_1._defaultTimeCallback) {
TimeService_1.initialize();
}
return TimeService_1._defaultUnit;
}
};
exports.TimeService = TimeService;
tslib_1.__decorate([
(0, decorators_1.SerializableMemberFunction)(),
tslib_1.__metadata("design:type", Function)
], TimeService.prototype, "_timeCallback", void 0);
tslib_1.__decorate([
(0, decorators_1.SerializableMember)(),
tslib_1.__metadata("design:type", utils_1.TimeUnit)
], TimeService.prototype, "_timeUnit", void 0);
tslib_1.__decorate([
(0, decorators_1.SerializableMember)(),
tslib_1.__metadata("design:type", Boolean),
tslib_1.__metadata("design:paramtypes", [Boolean])
], TimeService.prototype, "isDefault", null);
exports.TimeService = TimeService = TimeService_1 = tslib_1.__decorate([
(0, decorators_1.SerializableObject)(),
tslib_1.__metadata("design:paramtypes", [Function, utils_1.TimeUnit])
], TimeService);
//# sourceMappingURL=TimeService.js.map