• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *  Copyright 2014 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 #import <Foundation/Foundation.h>
12 
13 #import "RTCVideoTrack.h"
14 
15 typedef NS_ENUM(NSInteger, ARDAppClientState) {
16   // Disconnected from servers.
17   kARDAppClientStateDisconnected,
18   // Connecting to servers.
19   kARDAppClientStateConnecting,
20   // Connected to servers.
21   kARDAppClientStateConnected,
22 };
23 
24 @class ARDAppClient;
25 // The delegate is informed of pertinent events and will be called on the
26 // main queue.
27 @protocol ARDAppClientDelegate <NSObject>
28 
29 - (void)appClient:(ARDAppClient *)client
30     didChangeState:(ARDAppClientState)state;
31 
32 - (void)appClient:(ARDAppClient *)client
33     didChangeConnectionState:(RTCICEConnectionState)state;
34 
35 - (void)appClient:(ARDAppClient *)client
36     didReceiveLocalVideoTrack:(RTCVideoTrack *)localVideoTrack;
37 
38 - (void)appClient:(ARDAppClient *)client
39     didReceiveRemoteVideoTrack:(RTCVideoTrack *)remoteVideoTrack;
40 
41 - (void)appClient:(ARDAppClient *)client
42          didError:(NSError *)error;
43 
44 - (void)appClient:(ARDAppClient *)client
45       didGetStats:(NSArray *)stats;
46 
47 @end
48 
49 // Handles connections to the AppRTC server for a given room. Methods on this
50 // class should only be called from the main queue.
51 @interface ARDAppClient : NSObject
52 
53 // If |shouldGetStats| is true, stats will be reported in 1s intervals through
54 // the delegate.
55 @property(nonatomic, assign) BOOL shouldGetStats;
56 @property(nonatomic, readonly) ARDAppClientState state;
57 @property(nonatomic, weak) id<ARDAppClientDelegate> delegate;
58 
59 // Convenience constructor since all expected use cases will need a delegate
60 // in order to receive remote tracks.
61 - (instancetype)initWithDelegate:(id<ARDAppClientDelegate>)delegate;
62 
63 // Establishes a connection with the AppRTC servers for the given room id.
64 // If |isLoopback| is true, the call will connect to itself.
65 // If |isAudioOnly| is true, video will be disabled for the call.
66 - (void)connectToRoomWithId:(NSString *)roomId
67                  isLoopback:(BOOL)isLoopback
68                 isAudioOnly:(BOOL)isAudioOnly;
69 
70 // Disconnects from the AppRTC servers and any connected clients.
71 - (void)disconnect;
72 
73 @end
74