Пример #1
0
  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);
  }
Пример #2
0
  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);
  }