public void answer(long sourceUserId, long destinationUserId, boolean answer) { addWebRTCClient(sourceUserId); if (!hasAvailableWebRTCClient(sourceUserId)) { return; } if (!hasAvailableWebRTCClient(destinationUserId)) { pushErrorWebRTCMail(destinationUserId, sourceUserId, "unavailableUser"); return; } WebRTCClient sourceWebRTCClient = getWebRTCClient(sourceUserId); WebRTCClient destinationWebRTCClient = getWebRTCClient(destinationUserId); if (!isValidWebRTCConnectionState( sourceWebRTCClient, destinationWebRTCClient, WebRTCConnection.State.INITIATED)) { pushErrorWebRTCMail(destinationUserId, sourceUserId, "invalidState"); return; } WebRTCConnection webRTCConnection = sourceWebRTCClient.getWebRTCConnection(destinationWebRTCClient); WebRTCClient webRTCConnectionSourceWebRTCClient = webRTCConnection.getSourceWebRTCClient(); if (webRTCConnectionSourceWebRTCClient == sourceWebRTCClient) { pushErrorWebRTCMail(destinationUserId, sourceUserId, "cannotAnswer"); return; } if (answer) { webRTCConnection.setState(WebRTCConnection.State.CONNECTED); } else { sourceWebRTCClient.removeBilateralWebRTCConnection(destinationWebRTCClient); } JSONObject messageJSONObject = JSONFactoryUtil.createJSONObject(); messageJSONObject.put("answer", answer); messageJSONObject.put("type", "answer"); pushConnectionStateWebRTCMail(sourceWebRTCClient, destinationWebRTCClient, messageJSONObject); }
public void call(long sourceUserId, long destinationUserId) { addWebRTCClient(sourceUserId); if (!hasAvailableWebRTCClient(sourceUserId)) { return; } if (!hasAvailableWebRTCClient(destinationUserId)) { pushErrorWebRTCMail(destinationUserId, sourceUserId, "unavailableUser"); return; } WebRTCClient sourceWebRTCClient = getWebRTCClient(sourceUserId); WebRTCClient destinationWebRTCClient = getWebRTCClient(destinationUserId); if (sourceWebRTCClient.hasWebRTCConnection(destinationWebRTCClient) || destinationWebRTCClient.hasWebRTCConnection(sourceWebRTCClient)) { pushErrorWebRTCMail(destinationUserId, sourceUserId, "existingConnection"); return; } WebRTCConnection webRTCConnection = new WebRTCConnection(sourceWebRTCClient); webRTCConnection.setState(WebRTCConnection.State.INITIATED); destinationWebRTCClient.addWebRTCConnection(sourceWebRTCClient, webRTCConnection); sourceWebRTCClient.addWebRTCConnection(destinationWebRTCClient, webRTCConnection); JSONObject messageJSONObject = JSONFactoryUtil.createJSONObject(); messageJSONObject.put("type", "call"); pushConnectionStateWebRTCMail(sourceWebRTCClient, destinationWebRTCClient, messageJSONObject); }