use of org.apache.openmeetings.db.entity.basic.Client in project openmeetings by apache.
the class ClientManager method removeFromRoom.
public IClient removeFromRoom(IClient _c) {
Long roomId = _c.getRoomId();
log.debug("Removing online room client: {}, room: {}", _c.getUid(), roomId);
if (roomId != null) {
IMap<Long, Set<String>> rooms = rooms();
rooms.lock(roomId);
Set<String> clients = rooms.get(roomId);
if (clients != null) {
clients.remove(_c.getUid());
rooms.put(roomId, clients);
onlineRooms.put(roomId, clients);
}
rooms.unlock(roomId);
/* FIXME TODO KurentoHandler
if (_c instanceof StreamClient) {
StreamClient sc = (StreamClient)_c;
if (Client.Type.mobile != sc.getType() && Client.Type.sip != sc.getType()) {
scopeAdapter.roomLeaveByScope(_c, roomId);
}
}
*/
if (_c instanceof Client) {
// FIXME TODO scopeAdapter.dropSharing(_c, roomId);
Client c = (Client) _c;
kHandler.leaveRoom(c);
/* FIXME TODO
IScope sc = scopeAdapter.getChildScope(roomId);
for (String uid : c.getStreams()) {
scopeAdapter.sendMessageById("quit", uid, sc);
}
*/
c.setRoom(null);
c.clear();
update(c);
}
}
return _c;
}
use of org.apache.openmeetings.db.entity.basic.Client in project openmeetings by apache.
the class NicknameDialog method onSubmit.
@Override
protected void onSubmit(AjaxRequestTarget target) {
final User u = form.getModelObject();
final Client c = room.getClient();
c.getUser().setFirstname(u.getFirstname()).setLastname(u.getLastname());
room.broadcast(cm.update(c));
}
use of org.apache.openmeetings.db.entity.basic.Client in project openmeetings by apache.
the class RoomPanel method updateInterviewRecordingButtons.
private void updateInterviewRecordingButtons(IPartialPageRequestHandler handler) {
Client _c = getClient();
if (interview && _c.hasRight(Right.moderator)) {
if (recordingUser == null) {
boolean hasStreams = false;
for (Client cl : cm.listByRoom(r.getId())) {
if (!cl.getStreams().isEmpty()) {
hasStreams = true;
break;
}
}
handler.appendJavaScript(String.format("WbArea.setRecStopEnabled(false);WbArea.setRecStartEnabled(%s);", hasStreams));
} else {
handler.appendJavaScript("WbArea.setRecStartEnabled(false);WbArea.setRecStopEnabled(true);");
}
}
}
use of org.apache.openmeetings.db.entity.basic.Client in project openmeetings by apache.
the class RoomPanel method requestRight.
public void requestRight(Right right, IPartialPageRequestHandler handler) {
RoomMessage.Type reqType = null;
List<Client> mods = cm.listByRoom(r.getId(), c -> c.hasRight(Room.Right.moderator));
if (mods.isEmpty()) {
if (r.isModerated()) {
// dialog
waitForModerator.open(handler);
return;
} else {
// we found no-one we can ask, allow right
broadcast(cm.update(getClient().allow(right)));
}
}
// ask
switch(right) {
case moderator:
reqType = Type.requestRightModerator;
break;
case presenter:
reqType = Type.requestRightPresenter;
break;
case whiteBoard:
reqType = Type.requestRightWb;
break;
case share:
reqType = Type.requestRightWb;
break;
case audio:
reqType = Type.requestRightA;
break;
case exclusive:
reqType = Type.requestRightExclusive;
break;
case mute:
reqType = Type.requestRightMute;
break;
case remoteControl:
reqType = Type.requestRightRemote;
break;
case video:
reqType = Type.requestRightAv;
break;
default:
break;
}
if (reqType != null) {
WebSocketHelper.sendRoom(new TextRoomMessage(getRoom().getId(), getClient(), reqType, getClient().getUid()));
}
}
use of org.apache.openmeetings.db.entity.basic.Client in project openmeetings by apache.
the class KurentoHandler method onMessage.
public void onMessage(IWsClient _c, JSONObject msg) {
if (client == null) {
sendError(_c, "Multimedia server is inaccessible");
return;
}
final String cmdId = msg.getString("id");
if ("test".equals(msg.optString("mode"))) {
KTestUser user = getTestByUid(_c.getUid());
switch(cmdId) {
case "start":
{
// TODO FIXME assert null user ???
user = new KTestUser(_c, msg, client.createMediaPipeline());
testsByUid.put(_c.getUid(), user);
}
break;
case "iceCandidate":
{
JSONObject candidate = msg.getJSONObject("candidate");
if (user != null) {
IceCandidate cand = new IceCandidate(candidate.getString("candidate"), candidate.getString("sdpMid"), candidate.getInt("sdpMLineIndex"));
user.addCandidate(cand);
}
}
break;
case "play":
user.play(_c, msg, client.createMediaPipeline());
break;
}
} else {
final Client c = (Client) _c;
if (c != null) {
log.debug("Incoming message from user with ID '{}': {}", c.getUserId(), msg);
} else {
log.debug("Incoming message from new user: {}", msg);
}
KUser user = getByUid(_c.getUid());
switch(cmdId) {
case "joinRoom":
joinRoom(c);
break;
case "receiveVideoFrom":
final String senderUid = msg.getString("sender");
final KUser sender = getByUid(senderUid);
final String sdpOffer = msg.getString("sdpOffer");
if (user == null) {
KRoom room = getRoom(c.getRoomId());
user = room.addUser(this, _c.getUid());
}
user.receiveVideoFrom(this, sender, sdpOffer);
break;
case "onIceCandidate":
{
JSONObject candidate = msg.getJSONObject("candidate");
if (user == null) {
KRoom room = getRoom(c.getRoomId());
user = room.addUser(this, _c.getUid());
}
IceCandidate cand = new IceCandidate(candidate.getString("candidate"), candidate.getString("sdpMid"), candidate.getInt("sdpMLineIndex"));
user.addCandidate(cand, msg.getString("uid"));
}
break;
}
}
}
Aggregations