UNPKG

@openhps/core

Version:

Open Hybrid Positioning System - Core component

106 lines 3.65 kB
"use strict"; 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