Search in sources :

Example 6 with Client

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;
}
Also used : HashSet(java.util.HashSet) Set(java.util.Set) ConcurrentHashSet(org.apache.wicket.util.collections.ConcurrentHashSet) IClient(org.apache.openmeetings.db.entity.basic.IClient) Client(org.apache.openmeetings.db.entity.basic.Client)

Example 7 with Client

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));
}
Also used : User(org.apache.openmeetings.db.entity.user.User) Client(org.apache.openmeetings.db.entity.basic.Client)

Example 8 with Client

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);");
        }
    }
}
Also used : Client(org.apache.openmeetings.db.entity.basic.Client)

Example 9 with Client

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()));
    }
}
Also used : TextRoomMessage(org.apache.openmeetings.db.util.ws.TextRoomMessage) RoomMessage(org.apache.openmeetings.db.util.ws.RoomMessage) Client(org.apache.openmeetings.db.entity.basic.Client) TextRoomMessage(org.apache.openmeetings.db.util.ws.TextRoomMessage) Type(org.apache.openmeetings.db.util.ws.RoomMessage.Type)

Example 10 with Client

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;
        }
    }
}
Also used : JSONObject(com.github.openjson.JSONObject) Client(org.apache.openmeetings.db.entity.basic.Client) KurentoClient(org.kurento.client.KurentoClient) IWsClient(org.apache.openmeetings.db.entity.basic.IWsClient) IceCandidate(org.kurento.client.IceCandidate)

Aggregations

Client (org.apache.openmeetings.db.entity.basic.Client)17 JSONObject (com.github.openjson.JSONObject)5 User (org.apache.openmeetings.db.entity.user.User)5 Whiteboard (org.apache.openmeetings.db.dto.room.Whiteboard)3 IClient (org.apache.openmeetings.db.entity.basic.IClient)3 Room (org.apache.openmeetings.db.entity.room.Room)3 RoomMessage (org.apache.openmeetings.db.util.ws.RoomMessage)3 Whiteboards (org.apache.openmeetings.db.dto.room.Whiteboards)2 TextRoomMessage (org.apache.openmeetings.db.util.ws.TextRoomMessage)2 JSONArray (com.github.openjson.JSONArray)1 BufferedImage (java.awt.image.BufferedImage)1 ByteArrayInputStream (java.io.ByteArrayInputStream)1 ByteArrayOutputStream (java.io.ByteArrayOutputStream)1 InputStream (java.io.InputStream)1 HashSet (java.util.HashSet)1 Entry (java.util.Map.Entry)1 Set (java.util.Set)1 IWsClient (org.apache.openmeetings.db.entity.basic.IWsClient)1 FileItem (org.apache.openmeetings.db.entity.file.FileItem)1 Recording (org.apache.openmeetings.db.entity.record.Recording)1