123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- /* @flow */
-
- import EventEmitter from 'events';
- import { getLogger } from 'jitsi-meet-logger';
-
- import {
- REMOTE_CONTROL_MESSAGE_NAME
- } from '../../service/remotecontrol/Constants';
-
- const logger = getLogger(__filename);
-
- declare var APP: Object;
-
- /**
- * Implements common logic for Receiver class and Controller class.
- */
- export default class RemoteControlParticipant extends EventEmitter {
- _enabled: boolean;
-
- /**
- * Creates new instance.
- */
- constructor() {
- super();
- this._enabled = false;
- }
-
- /**
- * Enables / Disables the remote control.
- *
- * @param {boolean} enabled - The new state.
- * @returns {void}
- */
- enable(enabled: boolean) {
- this._enabled = enabled;
- }
-
- /**
- * Sends remote control message to other participant trough data channel.
- *
- * @param {string} to - The participant who will receive the event.
- * @param {RemoteControlEvent} event - The remote control event.
- * @param {Function} onDataChannelFail - Handler for data channel failure.
- * @returns {void}
- */
- sendRemoteControlEndpointMessage(
- to: ?string,
- event: Object,
- onDataChannelFail: ?Function) {
- if (!this._enabled || !to) {
- logger.warn(
- 'Remote control: Skip sending remote control event. Params:',
- this.enable,
- to);
-
- return;
- }
- try {
- APP.conference.sendEndpointMessage(to, {
- name: REMOTE_CONTROL_MESSAGE_NAME,
- ...event
- });
- } catch (e) {
- logger.error(
- 'Failed to send EndpointMessage via the datachannels',
- e);
- if (typeof onDataChannelFail === 'function') {
- onDataChannelFail(e);
- }
- }
- }
- }
|