public void execute(String peerId, JSONObject payload) throws JSONException { Log.d("PnUserHangup", "PnUserHangupAction"); PnPeer peer = peers.get(peerId); peer.hangup(); mRtcListener.onPeerConnectionClosed(peer); // Todo: Consider Callback? }
public void execute(String peerId, JSONObject payload) throws JSONException { Log.d("COAction", "CreateOfferAction"); PnPeer peer = peers.get(peerId); peer.setDialed(true); peer.setType(PnPeer.TYPE_ANSWER); peer.pc.createOffer(peer, signalingParams.pcConstraints); }
public void execute(String peerId, JSONObject payload) throws JSONException { Log.d("CAAction", "CreateAnswerAction"); PnPeer peer = peers.get(peerId); peer.setType(PnPeer.TYPE_OFFER); peer.setStatus(PnPeer.STATUS_CONNECTED); SessionDescription sdp = new SessionDescription( SessionDescription.Type.fromCanonicalForm(payload.getString("type")), payload.getString("sdp")); peer.pc.setRemoteDescription(peer, sdp); peer.pc.createAnswer(peer, signalingParams.pcConstraints); }
/** * Close connection (hangup) no a certain peer. * * @param id PnPeer id to close connection with */ public void closeConnection(String id) { JSONObject packet = new JSONObject(); try { if (!this.peers.containsKey(id)) return; PnPeer peer = this.peers.get(id); peer.hangup(); packet.put(PnRTCMessage.JSON_HANGUP, true); transmitMessage(id, packet); mRtcListener.onPeerConnectionClosed(peer); } catch (JSONException e) { e.printStackTrace(); } }
@Override public void successCallback(String channel, Object message) { if (!(message instanceof JSONObject)) return; // Ignore if not valid JSON. JSONObject jsonMessage = (JSONObject) message; mRtcListener.onDebug(new PnRTCMessage(jsonMessage)); try { String peerId = jsonMessage.getString(PnRTCMessage.JSON_NUMBER); JSONObject packet = jsonMessage.getJSONObject(PnRTCMessage.JSON_PACKET); PnPeer peer; if (!peers.containsKey(peerId)) { // Possibly threshold number of allowed users peer = addPeer(peerId); peer.pc.addStream(localMediaStream); } else { peer = peers.get(peerId); } if (peer.getStatus().equals(PnPeer.STATUS_DISCONNECTED)) return; // Do nothing if disconnected. if (packet.has(PnRTCMessage.JSON_USERMSG)) { actionMap.get(PnUserMessageAction.TRIGGER).execute(peerId, packet); return; } if (packet.has(PnRTCMessage.JSON_HANGUP)) { actionMap.get(PnUserHangupAction.TRIGGER).execute(peerId, packet); return; } if (packet.has(PnRTCMessage.JSON_THUMBNAIL)) { return; // No handler for thumbnail or hangup yet, will be separate controller callback } if (packet.has(PnRTCMessage.JSON_SDP)) { if (!peer.received) { peer.setReceived(true); mRtcListener.onDebug(new PnRTCMessage("SDP - " + peer.toString())); // Todo: reveivercb(peer); } String type = packet.getString(PnRTCMessage.JSON_TYPE); actionMap.get(type).execute(peerId, packet); return; } if (packet.has(PnRTCMessage.JSON_ICE)) { actionMap.get(AddIceCandidateAction.TRIGGER).execute(peerId, packet); return; } } catch (JSONException e) { e.printStackTrace(); } }