• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *  Copyright 2013 The WebRTC Project Authors. All rights reserved.
3  *
4  *  Use of this source code is governed by a BSD-style license
5  *  that can be found in the LICENSE file in the root of the source
6  *  tree. An additional intellectual property rights grant can be found
7  *  in the file PATENTS.  All contributing project authors may
8  *  be found in the AUTHORS file in the root of the source tree.
9  */
10 
11 package org.appspot.apprtc;
12 
13 import org.webrtc.IceCandidate;
14 import org.webrtc.PeerConnection;
15 import org.webrtc.SessionDescription;
16 
17 import java.util.List;
18 
19 /**
20  * AppRTCClient is the interface representing an AppRTC client.
21  */
22 public interface AppRTCClient {
23   /**
24    * Struct holding the connection parameters of an AppRTC room.
25    */
26   class RoomConnectionParameters {
27     public final String roomUrl;
28     public final String roomId;
29     public final boolean loopback;
30     public final String urlParameters;
RoomConnectionParameters( String roomUrl, String roomId, boolean loopback, String urlParameters)31     public RoomConnectionParameters(
32         String roomUrl, String roomId, boolean loopback, String urlParameters) {
33       this.roomUrl = roomUrl;
34       this.roomId = roomId;
35       this.loopback = loopback;
36       this.urlParameters = urlParameters;
37     }
RoomConnectionParameters(String roomUrl, String roomId, boolean loopback)38     public RoomConnectionParameters(String roomUrl, String roomId, boolean loopback) {
39       this(roomUrl, roomId, loopback, null /* urlParameters */);
40     }
41   }
42 
43   /**
44    * Asynchronously connect to an AppRTC room URL using supplied connection
45    * parameters. Once connection is established onConnectedToRoom()
46    * callback with room parameters is invoked.
47    */
connectToRoom(RoomConnectionParameters connectionParameters)48   void connectToRoom(RoomConnectionParameters connectionParameters);
49 
50   /**
51    * Send offer SDP to the other participant.
52    */
sendOfferSdp(final SessionDescription sdp)53   void sendOfferSdp(final SessionDescription sdp);
54 
55   /**
56    * Send answer SDP to the other participant.
57    */
sendAnswerSdp(final SessionDescription sdp)58   void sendAnswerSdp(final SessionDescription sdp);
59 
60   /**
61    * Send Ice candidate to the other participant.
62    */
sendLocalIceCandidate(final IceCandidate candidate)63   void sendLocalIceCandidate(final IceCandidate candidate);
64 
65   /**
66    * Send removed ICE candidates to the other participant.
67    */
sendLocalIceCandidateRemovals(final IceCandidate[] candidates)68   void sendLocalIceCandidateRemovals(final IceCandidate[] candidates);
69 
70   /**
71    * Disconnect from room.
72    */
disconnectFromRoom()73   void disconnectFromRoom();
74 
75   /**
76    * Struct holding the signaling parameters of an AppRTC room.
77    */
78   class SignalingParameters {
79     public final List<PeerConnection.IceServer> iceServers;
80     public final boolean initiator;
81     public final String clientId;
82     public final String wssUrl;
83     public final String wssPostUrl;
84     public final SessionDescription offerSdp;
85     public final List<IceCandidate> iceCandidates;
86 
SignalingParameters(List<PeerConnection.IceServer> iceServers, boolean initiator, String clientId, String wssUrl, String wssPostUrl, SessionDescription offerSdp, List<IceCandidate> iceCandidates)87     public SignalingParameters(List<PeerConnection.IceServer> iceServers, boolean initiator,
88         String clientId, String wssUrl, String wssPostUrl, SessionDescription offerSdp,
89         List<IceCandidate> iceCandidates) {
90       this.iceServers = iceServers;
91       this.initiator = initiator;
92       this.clientId = clientId;
93       this.wssUrl = wssUrl;
94       this.wssPostUrl = wssPostUrl;
95       this.offerSdp = offerSdp;
96       this.iceCandidates = iceCandidates;
97     }
98   }
99 
100   /**
101    * Callback interface for messages delivered on signaling channel.
102    *
103    * <p>Methods are guaranteed to be invoked on the UI thread of `activity`.
104    */
105   interface SignalingEvents {
106     /**
107      * Callback fired once the room's signaling parameters
108      * SignalingParameters are extracted.
109      */
onConnectedToRoom(final SignalingParameters params)110     void onConnectedToRoom(final SignalingParameters params);
111 
112     /**
113      * Callback fired once remote SDP is received.
114      */
onRemoteDescription(final SessionDescription sdp)115     void onRemoteDescription(final SessionDescription sdp);
116 
117     /**
118      * Callback fired once remote Ice candidate is received.
119      */
onRemoteIceCandidate(final IceCandidate candidate)120     void onRemoteIceCandidate(final IceCandidate candidate);
121 
122     /**
123      * Callback fired once remote Ice candidate removals are received.
124      */
onRemoteIceCandidatesRemoved(final IceCandidate[] candidates)125     void onRemoteIceCandidatesRemoved(final IceCandidate[] candidates);
126 
127     /**
128      * Callback fired once channel is closed.
129      */
onChannelClose()130     void onChannelClose();
131 
132     /**
133      * Callback fired once channel error happened.
134      */
onChannelError(final String description)135     void onChannelError(final String description);
136   }
137 }
138