/* * 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 { /** * 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(); /** * 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);
}
/**
* 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 */);
}
}
/**
* Struct holding the signaling parameters of an AppRTC room.
*/
class SignalingParameters {
public final List