UNPKG

@openhps/core

Version:

Open Hybrid Positioning System - Core component

87 lines 3.01 kB
var TimeService_1; import { __decorate, __metadata } from "tslib"; import { Service } from './Service'; import { TimeUnit } from '../utils'; import { SerializableMember, SerializableMemberFunction, SerializableObject } from '../data/decorators'; /** * Time service for retrieving the current time. */ let TimeService = TimeService_1 = class TimeService extends Service { constructor(timeCallback, unit = 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 = 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 = 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; } }; __decorate([SerializableMemberFunction(), __metadata("design:type", Function)], TimeService.prototype, "_timeCallback", void 0); __decorate([SerializableMember(), __metadata("design:type", TimeUnit)], TimeService.prototype, "_timeUnit", void 0); __decorate([SerializableMember(), __metadata("design:type", Boolean), __metadata("design:paramtypes", [Boolean])], TimeService.prototype, "isDefault", null); TimeService = TimeService_1 = __decorate([SerializableObject(), __metadata("design:paramtypes", [Function, TimeUnit])], TimeService); export { TimeService };