agora-edu-core
Version:
Core APIs for building an online classroom
199 lines (197 loc) • 7.62 kB
JavaScript
;
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);