UNPKG

agora-edu-core

Version:

Core APIs for building an online classroom

199 lines (197 loc) 7.62 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.StatisticsStore = void 0; var _agoraRteSdk = require("agora-rte-sdk"); var _mobx = require("mobx"); var _base = require("../base"); var _class, _descriptor, _dec, _class2, _descriptor2, _SceneEventHandler; function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); } function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, ("value" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; } function _initializerWarningHelper(r, e) { throw Error("Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform."); } /** * `StatisticsStore` 类提供网络相关数据。 */ /** @en * The `StatisticsStore` class provides network statistics. */ let StatisticsStore = exports.StatisticsStore = (_class = class StatisticsStore extends _base.EduStoreBase { constructor(...args) { super(...args); this._disposers = []; _initializerDefineProperty(this, "_dataStore", _descriptor, this); } /** * 丢包率,范围:0 ~ 1 * /** * @en * The packet loss rate, range by: 0 ~ 1 */ get packetLoss() { return this._dataStore.packetLoss; } /** * 上行网络质量 **/ /** @en * The uplink network quality */ get uplinkNetworkQuality() { return this._dataStore.uplinkNetworkQuality; } /** * 下行网络质量 **/ /** @en * The downlink network quality */ get downlinkNetworkQuality() { return this._dataStore.downlinkNetworkQuality; } /** * 应用 CPU 用量,范围:0 ~ 1 * 仅可在 Electron 环境下使用 */ /** @en * Application CPU usage, range by: 0 ~ 1 * Electron platform use only */ get cpu() { return this._dataStore.cpu; } /** * 系统 CPU 用量,范围:0 ~ 1 * 仅可在 Electron 环境下使用 */ /** @en * System CPU usage, range by: 0 ~ 1 * Electron platform use only */ get cpuTotal() { return this._dataStore.cpuTotal; } /** * 网络延迟,单位:毫秒 **/ /** @en * Network delay, unit: milliseconds */ get delay() { return this._dataStore.delay; } _setEventHandler(scene) { if (this.classroomStore.connectionStore.mainRoomScene === scene) { let handler = SceneEventHandler.getEventHandler(scene); if (!handler) { handler = SceneEventHandler.createEventHandler(scene); } this._dataStore = handler.dataStore; } else { const handler = SceneEventHandler.createEventHandler(scene); this._dataStore = handler.dataStore; } } /** * @internal */ /** * @internal */ onInstall() { this._disposers.push((0, _mobx.reaction)(() => this.classroomStore.connectionStore.scene, scene => { if (scene) { this._setEventHandler(scene); } })); } /** * @internal */ /** * @internal */ onDestroy() { SceneEventHandler.cleanup(); this._disposers.forEach(d => d()); this._disposers = []; } }, _descriptor = _applyDecoratedDescriptor(_class.prototype, "_dataStore", [_mobx.observable], { configurable: true, enumerable: true, writable: true, initializer: function () { return { packetLoss: 0, downlinkNetworkQuality: _agoraRteSdk.AGNetworkQuality.good, // 默认网络状态为正常 uplinkNetworkQuality: _agoraRteSdk.AGNetworkQuality.good, // 默认网络状态为正常 cpu: 0, cpuTotal: 0, delay: 0 }; } }), _applyDecoratedDescriptor(_class.prototype, "packetLoss", [_mobx.computed], Object.getOwnPropertyDescriptor(_class.prototype, "packetLoss"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "uplinkNetworkQuality", [_mobx.computed], Object.getOwnPropertyDescriptor(_class.prototype, "uplinkNetworkQuality"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "downlinkNetworkQuality", [_mobx.computed], Object.getOwnPropertyDescriptor(_class.prototype, "downlinkNetworkQuality"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "cpu", [_mobx.computed], Object.getOwnPropertyDescriptor(_class.prototype, "cpu"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "cpuTotal", [_mobx.computed], Object.getOwnPropertyDescriptor(_class.prototype, "cpuTotal"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "delay", [_mobx.computed], Object.getOwnPropertyDescriptor(_class.prototype, "delay"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "_setEventHandler", [_mobx.action], Object.getOwnPropertyDescriptor(_class.prototype, "_setEventHandler"), _class.prototype), _class); let SceneEventHandler = (_dec = _mobx.action.bound, _class2 = (_SceneEventHandler = class SceneEventHandler { static createEventHandler(scene) { if (SceneEventHandler._handlers[scene.sceneId]) { SceneEventHandler._handlers[scene.sceneId].removeEventHandlers(); } const handler = new SceneEventHandler(scene); handler.addEventHandlers(); SceneEventHandler._handlers[scene.sceneId] = handler; return SceneEventHandler._handlers[scene.sceneId]; } static getEventHandler(scene) { return SceneEventHandler._handlers[scene.sceneId]; } static cleanup() { Object.keys(SceneEventHandler._handlers).forEach(k => { SceneEventHandler._handlers[k].removeEventHandlers(); }); SceneEventHandler._handlers = {}; } constructor(_scene) { this._scene = _scene; _initializerDefineProperty(this, "dataStore", _descriptor2, this); } addEventHandlers() { this._scene.on(_agoraRteSdk.AgoraRteEventType.NetworkStats, this._updateNetworkStats); } removeEventHandlers() { this._scene.off(_agoraRteSdk.AgoraRteEventType.NetworkStats, this._updateNetworkStats); } _updateNetworkStats({ packetLoss = 0, downlinkNetworkQuality = _agoraRteSdk.AGNetworkQuality.good, uplinkNetworkQuality = _agoraRteSdk.AGNetworkQuality.good, cpu = -1, cpuTotal = -1, delay = 0 }) { this.dataStore.packetLoss = packetLoss; this.dataStore.uplinkNetworkQuality = uplinkNetworkQuality; this.dataStore.downlinkNetworkQuality = downlinkNetworkQuality; this.dataStore.cpu = cpu; this.dataStore.cpuTotal = cpuTotal; this.dataStore.delay = delay; } }, _SceneEventHandler._handlers = {}, _SceneEventHandler), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, "dataStore", [_mobx.observable], { configurable: true, enumerable: true, writable: true, initializer: function () { return { packetLoss: 0, downlinkNetworkQuality: _agoraRteSdk.AGNetworkQuality.good, // 默认网络状态为正常 uplinkNetworkQuality: _agoraRteSdk.AGNetworkQuality.good, // 默认网络状态为正常 cpu: 0, cpuTotal: 0, delay: 0 }; } }), _applyDecoratedDescriptor(_class2.prototype, "_updateNetworkStats", [_dec], Object.getOwnPropertyDescriptor(_class2.prototype, "_updateNetworkStats"), _class2.prototype), _class2);