public void onToggleActivity()

in openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/StreamProcessor.java [178:216]


	public void onToggleActivity(Client c, Activity a) {
		log.info("PARTICIPANT {}: trying to toggle activity {}", c, a);
		if (!kHandler.isConnected()) {
			return;
		}

		if (c.isAllowed(a)) {
			if (a == Activity.AUDIO && !c.isMicEnabled()) {
				return;
			}
			if (a == Activity.VIDEO && !c.isCamEnabled()) {
				return;
			}
			if (a == Activity.AUDIO_VIDEO && !c.isMicEnabled() && !c.isCamEnabled()) {
				return;
			}
			Optional<WebcamStreamDesc> cam = c.getCamStreams().findFirst();
			if (cam.isPresent()) {
				WebcamStreamDesc camStr = cam.get();
				camStr.toggle(a);
				if (!camStr.isBroadcasting()) {
					KStream s = getByUid(camStr.getUid());
					if (s != null) {
						s.stopBroadcast();
					}
					c.removeStream(camStr.getUid());
				}
				cm.update(c);
				WebSocketHelper.sendRoom(new TextRoomMessage(c.getRoomId(), c, RoomMessage.Type.RIGHT_UPDATED, c.getUid()));
			} else {
				StreamDesc sd = c.addStream(StreamType.WEBCAM, a);
				log.debug("User {}: has started broadcast", sd.getUid());
				kHandler.sendClient(sd.getSid(), newKurentoMsg()
						.put("id", "broadcast")
						.put("stream", sd.toJson(true))
						.put(PARAM_ICE, kHandler.getTurnServers(c, false)));
			}
		}
	}