| /* | |
| * 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<PeerConnection.IceServer> iceServers; | |
| public final boolean initiator; | |
| public final String clientId; | |
| public final String wssUrl; | |
| public final String wssPostUrl; | |
| public final SessionDescription offerSdp; | |
| public final List<IceCandidate> iceCandidates; | |
| public SignalingParameters(List<PeerConnection.IceServer> iceServers, boolean initiator, | |
| String clientId, String wssUrl, String wssPostUrl, SessionDescription offerSdp, | |
| List<IceCandidate> 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. | |
| * | |
| * <p>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); | |
| } | |
| } |