/*
|
* 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.
|
* <p>
|
* <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);
|
}
|
|
/**
|
* 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<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;
|
}
|
}
|
}
|