/* * Copyright 2013 The WebRTC Project Authors. All rights reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ package org.appspot.apprtc; import org.webrtc.IceCandidate; import org.webrtc.PeerConnection; import org.webrtc.SessionDescription; import java.util.List; /** * AppRTCClient is the interface representing an AppRTC client. */ public interface AppRTCClient { /** * Struct holding the connection parameters of an AppRTC room. */ class RoomConnectionParameters { public final String roomUrl; public final String roomId; public final boolean loopback; public final String urlParameters; public RoomConnectionParameters( String roomUrl, String roomId, boolean loopback, String urlParameters) { this.roomUrl = roomUrl; this.roomId = roomId; this.loopback = loopback; this.urlParameters = urlParameters; } public RoomConnectionParameters(String roomUrl, String roomId, boolean loopback) { this(roomUrl, roomId, loopback, null /* urlParameters */); } } /** * Asynchronously connect to an AppRTC room URL using supplied connection * parameters. Once connection is established onConnectedToRoom() * callback with room parameters is invoked. */ void connectToRoom(RoomConnectionParameters connectionParameters); /** * Send offer SDP to the other participant. */ void sendOfferSdp(final SessionDescription sdp); /** * Send answer SDP to the other participant. */ void sendAnswerSdp(final SessionDescription sdp); /** * Send Ice candidate to the other participant. */ void sendLocalIceCandidate(final IceCandidate candidate); /** * Send removed ICE candidates to the other participant. */ void sendLocalIceCandidateRemovals(final IceCandidate[] candidates); /** * Disconnect from room. */ void disconnectFromRoom(); /** * Struct holding the signaling parameters of an AppRTC room. */ class SignalingParameters { public final List iceServers; public final boolean initiator; public final String clientId; public final String wssUrl; public final String wssPostUrl; public final SessionDescription offerSdp; public final List iceCandidates; public SignalingParameters(List iceServers, boolean initiator, String clientId, String wssUrl, String wssPostUrl, SessionDescription offerSdp, List iceCandidates) { this.iceServers = iceServers; this.initiator = initiator; this.clientId = clientId; this.wssUrl = wssUrl; this.wssPostUrl = wssPostUrl; this.offerSdp = offerSdp; this.iceCandidates = iceCandidates; } } /** * Callback interface for messages delivered on signaling channel. * *

Methods are guaranteed to be invoked on the UI thread of `activity`. */ interface SignalingEvents { /** * Callback fired once the room's signaling parameters * SignalingParameters are extracted. */ void onConnectedToRoom(final SignalingParameters params); /** * Callback fired once remote SDP is received. */ void onRemoteDescription(final SessionDescription sdp); /** * Callback fired once remote Ice candidate is received. */ void onRemoteIceCandidate(final IceCandidate candidate); /** * Callback fired once remote Ice candidate removals are received. */ void onRemoteIceCandidatesRemoved(final IceCandidate[] candidates); /** * Callback fired once channel is closed. */ void onChannelClose(); /** * Callback fired once channel error happened. */ void onChannelError(final String description); } }