UNPKG

@pano.video/panortc-react-native-sdk

Version:
158 lines (131 loc) 4.38 kB
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } import { NativeEventEmitter, NativeModules } from 'react-native'; const { /** * @ignore */ PanoRtcNetworkManagerModule } = NativeModules; /** * @ignore */ const Prefix = PanoRtcNetworkManagerModule.prefix; /** * @ignore */ const RtcNetworkManagerEvent = new NativeEventEmitter(PanoRtcNetworkManagerModule); /** * The {@link RtcNetworkManager} class. */ export default class RtcNetworkManager { constructor() { _defineProperty(this, "_listeners", new Map()); } /** * @ignore */ static _callMethod(method, args) { return PanoRtcNetworkManagerModule.callMethod(method, args); } destroy() { this.removeAllListeners(); } /** * Adds the [`RtcNetworkManagerHandler`]{@link RtcNetworkManagerHandler} handler. * * After setting the [`RtcNetworkManagerHandler`]{@link RtcNetworkManagerHandler} handler, you can listen for `RtcNetworkManager` events and receive the statistics of the corresponding RtcNetworkManager instance. * @param event The event type. * @param listener The [`RtcNetworkManagerHandler`]{@link RtcNetworkManagerHandler} handler. */ addListener(event, listener) { const callback = res => { const { data } = res; // @ts-ignore listener(...data); }; let map = this._listeners.get(event); if (map === undefined) { map = new Map(); this._listeners.set(event, map); } RtcNetworkManagerEvent.addListener(Prefix + event, callback); map.set(listener, callback); return { remove: () => { this.removeListener(event, listener); } }; } /** * Removes the [`RtcNetworkManagerHandler`]{@link RtcNetworkManagerHandler} handler. * * For callback events that you only want to listen for once, call this method to remove the specific [`RtcNetworkManagerHandler`]{@link RtcNetworkManagerHandler} objects after you have received them. * @param event The event type. * @param listener The [`RtcNetworkManagerHandler`]{@link RtcNetworkManagerHandler} handler. */ removeListener(event, listener) { const map = this._listeners.get(event); if (map === undefined) return; RtcNetworkManagerEvent.removeListener(Prefix + event, map.get(listener)); map.delete(listener); } /** * Removes all the [`RtcNetworkManagerHandler`]{@link RtcNetworkManagerHandler} handlers. * @param event The event type. */ removeAllListeners(event) { if (event === undefined) { this._listeners.forEach((_, key) => { RtcNetworkManagerEvent.removeAllListeners(Prefix + key); }); this._listeners.clear(); return; } RtcNetworkManagerEvent.removeAllListeners(Prefix + event); this._listeners.delete(event); } /** * @~english * @brief Start network test. * @param token The secure token that App Server got from PANO. * NOTE: don't use the token which is used for joining channel. * @param delegate Callback for test result, must be valid until stopNetworkTest called. * @return * - ResultCode.OK: Success * - others: Failure * @note The network test will consume additional bandwidth, please avoid doing network test in call. * @~chinese * @brief 启动网络测试。 * @param token App服务器向PANO获取的token。注意:不要使用加入频道时使用的 token。 * @param delegate 测试结果回调,在调用 stopNetworkTest 之前必须保持有效。 * @return * - ResultCode.OK: 成功 * - 其他: 失败 * @note 网络测试会产生额外流量,尽量避免在通话过程中进行测试。 */ startNetworkTest(token) { return RtcNetworkManager._callMethod('startNetworkTest', { token }); } /** * @~english * @brief Stop network test. * @return * - ResultCode.OK: Success * - others: Failure * @~chinese * @brief 停止网络测试。 * @return * - ResultCode.OK: 成功 * - 其他: 失败 */ stopNetworkTest() { return RtcNetworkManager._callMethod('stopNetworkTest'); } } /** * @ignore */ //# sourceMappingURL=RtcNetworkManager.native.js.map