Chromium Code Reviews| Index: webrtc/api/objc/RTCPeerConnection.h |
| diff --git a/webrtc/api/objc/RTCPeerConnection.h b/webrtc/api/objc/RTCPeerConnection.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..733a86779848cae07ecef407a6a4d382721400a9 |
| --- /dev/null |
| +++ b/webrtc/api/objc/RTCPeerConnection.h |
| @@ -0,0 +1,190 @@ |
| +/* |
| + * Copyright 2015 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. |
| + */ |
| + |
| +#import <Foundation/Foundation.h> |
| + |
| +#import "webrtc/api/objc/RTCPeerConnection.h" |
|
tkchin_webrtc
2016/02/05 16:15:16
? :)
hjon_webrtc
2016/02/09 00:59:53
Oops. Fixed. :-)
|
| + |
| +@class RTCConfiguration; |
| +@class RTCDataChannel; |
| +@class RTCDataChannelConfiguration; |
| +@class RTCIceCandidate; |
| +@class RTCMediaConstraints; |
| +@class RTCMediaStream; |
| +@class RTCMediaStreamTrack; |
| +@class RTCPeerConnectionFactory; |
| +@class RTCSessionDescription; |
| +@class RTCStatsReport; |
| + |
| +extern NSString * _Nonnull const kRTCPeerConnectionErrorDomain; |
|
tkchin_webrtc
2016/02/05 16:15:16
don't need _Nonnull here?
hjon_webrtc
2016/02/09 00:59:54
I didn't expect so, but I got this error without i
tkchin_webrtc
2016/02/10 18:54:40
Yeah just move the NONNULL_BEGIN up
hjon_webrtc
2016/02/11 00:25:07
Done.
|
| +extern int const kRTCSessionDescriptionErrorCode; |
| + |
| +/** Represents the signaling state of the peer connection. */ |
| +typedef NS_ENUM(NSInteger, RTCSignalingState) { |
| + RTCSignalingStateStable, |
| + RTCSignalingStateHaveLocalOffer, |
| + RTCSignalingStateHaveLocalPrAnswer, |
| + RTCSignalingStateHaveRemoteOffer, |
| + RTCSignalingStateHaveRemotePrAnswer, |
| + RTCSignalingStateClosed, |
| +}; |
| + |
| +/** Represents the ice connection state of the peer connection. */ |
| +typedef NS_ENUM(NSInteger, RTCIceConnectionState) { |
| + RTCIceConnectionStateNew, |
| + RTCIceConnectionStateChecking, |
| + RTCIceConnectionStateConnected, |
| + RTCIceConnectionStateCompleted, |
| + RTCIceConnectionStateFailed, |
| + RTCIceConnectionStateDisconnected, |
| + RTCIceConnectionStateClosed, |
| + RTCIceConnectionStateMax, |
| +}; |
| + |
| +/** Represents the ice gathering state of the peer connection. */ |
| +typedef NS_ENUM(NSInteger, RTCIceGatheringState) { |
| + RTCIceGatheringStateNew, |
| + RTCIceGatheringStateGathering, |
| + RTCIceGatheringStateComplete, |
| +}; |
| + |
| +/** Represents the stats output level. */ |
| +typedef NS_ENUM(NSInteger, RTCStatsOutputLevel) { |
| + RTCStatsOutputLevelStandard, |
| + RTCStatsOutputLevelDebug, |
| +}; |
| + |
| +NS_ASSUME_NONNULL_BEGIN |
| + |
| +@class RTCPeerConnection; |
| + |
| +@protocol RTCPeerConnectionDelegate <NSObject> |
| + |
| +/** Called when the SignalingState changed. */ |
| +- (void)peerConnection:(RTCPeerConnection *)peerConnection |
| + signalingStateChanged:(RTCSignalingState)stateChanged; |
|
tkchin_webrtc
2016/02/05 16:15:16
didChangeSignalingState
hjon_webrtc
2016/02/09 00:59:53
Done.
|
| + |
| +/** Triggered when media is received on a new stream from remote peer. */ |
|
tkchin_webrtc
2016/02/05 16:15:15
ditto nit triggered
hjon_webrtc
2016/02/09 00:59:54
Done.
|
| +- (void)peerConnection:(RTCPeerConnection *)peerConnection |
| + addedStream:(RTCMediaStream *)stream; |
| + |
| +/** Triggered when a remote peer closes a stream. */ |
| +- (void)peerConnection:(RTCPeerConnection *)peerConnection |
| + removedStream:(RTCMediaStream *)stream; |
| + |
| +/** Triggered when renegotiation is needed, for example ICE has restarted. */ |
| +- (void)peerConnectionNeedsRenegotiation:(RTCPeerConnection *)peerConnection; |
|
tkchin_webrtc
2016/02/05 16:15:15
peerConnectionShouldNegotiate
I don't think it's
hjon_webrtc
2016/02/09 00:59:53
You're right; the spec says negotiation, not reneg
|
| + |
| +/** Called any time the IceConnectionState changes. */ |
| +- (void)peerConnection:(RTCPeerConnection *)peerConnection |
| + iceConnectionStateChanged:(RTCIceConnectionState)newState; |
|
tkchin_webrtc
2016/02/05 16:15:16
didChangeIceConnectionState
hjon_webrtc
2016/02/09 00:59:53
Done.
|
| + |
| +/** Called any time the IceGatheringState changes. */ |
| +- (void)peerConnection:(RTCPeerConnection *)peerConnection |
| + iceGatheringStateChanged:(RTCIceGatheringState)newState; |
|
tkchin_webrtc
2016/02/05 16:15:15
didChangeIceGatheringState
hjon_webrtc
2016/02/09 00:59:54
Done.
|
| + |
| +/** New ice candidate has been found. */ |
| +- (void)peerConnection:(RTCPeerConnection *)peerConnection |
| + receivedIceCandidate:(RTCIceCandidate *)candidate; |
|
tkchin_webrtc
2016/02/05 16:15:16
didGenerateIceCandidate
hjon_webrtc
2016/02/09 00:59:54
Done.
|
| + |
| +/** New data channel has been opened. */ |
| +- (void)peerConnection:(RTCPeerConnection *)peerConnection |
| + didOpenDataChannel:(RTCDataChannel *)dataChannel; |
| + |
| +@end |
| + |
| + |
| +@interface RTCPeerConnection : NSObject |
| + |
| +/** |
| + * The object that will be notifed about events such as state changes and |
| + * streams being added or removed. |
| + */ |
| +@property(nonatomic, weak) id<RTCPeerConnectionDelegate> delegate; |
| + |
| +/** The pending or current remote description. */ |
| +@property(nonatomic, readonly) NSArray *localStreams; |
| + |
| +/** The pending or current local description. */ |
|
tkchin_webrtc
2016/02/05 16:15:16
? Not pending I think.
hjon_webrtc
2016/02/09 00:59:54
The spec mentions pending, but I'm not seeing an o
|
| +@property(nonatomic, readonly, nullable) |
| + RTCSessionDescription *localDescription; |
| + |
| +/** The pending or current remote description. */ |
| +@property(nonatomic, readonly, nullable) |
| + RTCSessionDescription *remoteDescription; |
| + |
| +/** The signaling state of this RTCPeerConnection instance. */ |
| +@property(nonatomic, readonly) RTCSignalingState signalingState; |
| + |
| +/** The ICE connection state of this RTCPeerConnection instance. */ |
| +@property(nonatomic, readonly) RTCIceConnectionState iceConnectionState; |
| + |
| +/** The ICE gathering state of this RTCPeerConnection instance. */ |
| +@property(nonatomic, readonly) RTCIceGatheringState iceGatheringState; |
| + |
| +- (instancetype)init NS_UNAVAILABLE; |
| + |
| +/** |
| + * Initialize an RTCPeerConnection with a configuration, constraints, and |
| + * delegate. |
| + */ |
| +- (instancetype)initWithFactory:(RTCPeerConnectionFactory *)factory |
| + configuration:(RTCConfiguration *)configuration |
| + constraints:(RTCMediaConstraints *)constraints |
| + delegate:(id<RTCPeerConnectionDelegate>)delegate |
| + NS_DESIGNATED_INITIALIZER; |
| + |
| +/** Terminate all media and close the transport. */ |
| +- (void)close; |
| + |
| +/** Provide a remote candidate to the ICE Agent. */ |
| +- (void)addIceCandidate:(RTCIceCandidate *)candidate; |
| + |
| +/** Add a new media stream to be sent on this peer connection. */ |
| +- (void)addStream:(RTCMediaStream *)stream; |
| + |
| +/** Remove the given media stream from this peer connection. */ |
| +- (void)removeStream:(RTCMediaStream *)stream; |
| + |
| +/** Create a new data channel with the given label and configuration. */ |
| +- (RTCDataChannel *)dataChannelWithLabel:(NSString *)label |
|
tkchin_webrtc
2016/02/05 16:15:15
If possible, move this to a category below. Corres
hjon_webrtc
2016/02/09 00:59:53
Done.
|
| + configuration:(RTCDataChannelConfiguration *)configuration; |
| + |
| +/** Generate an SDP offer. */ |
| +- (void)offerWithConstraints:(RTCMediaConstraints *)constraints |
|
tkchin_webrtc
2016/02/05 16:15:16
nit: offerForConstraints / answerForConstraints
hjon_webrtc
2016/02/09 00:59:54
Done.
|
| + completionHandler:(void (^) |
| + (RTCSessionDescription *sessionDescription, NSError *error))completionHandler; |
| + |
| +/** Generate an SDP answer. */ |
| +- (void)answerWithConstraints:(RTCMediaConstraints *)constraints |
| + completionHandler:(void (^) |
| + (RTCSessionDescription *sessionDescription, NSError *error))completionHandler; |
| + |
| +/** Apply the supplied RTCSessionDescription as the local description. */ |
| +- (void)setLocalDescription:(RTCSessionDescription *)sdp |
| + completionHandler:(void (^)(NSError *error))completionHandler; |
| + |
| +/** Apply the supplied RTCSessionDescription as the remote description. */ |
| +- (void)setRemoteDescription:(RTCSessionDescription *)sdp |
| + completionHandler:(void (^)(NSError *error))completionHandler; |
| + |
| +/** |
| + * Gather stats for the given RTCMediaStreamTrack. If |mediaStreamTrack| is nil |
| + * statistics are gathered for all tracks. |
| + */ |
| +- (void)statsForMediaStreamTrack: |
| + (nullable RTCMediaStreamTrack *)mediaStreamTrack |
| + statsOutputLevel:(RTCStatsOutputLevel)statsOutputLevel |
| + completionHandler: |
| + (void (^)(NSArray<RTCStatsReport *> *stats))completionHandler; |
| + |
| +@end |
| + |
| +NS_ASSUME_NONNULL_END |