Index: webrtc/api/objc/RTCDataChannel.h |
diff --git a/webrtc/api/objc/RTCDataChannel.h b/webrtc/api/objc/RTCDataChannel.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e35c29f96a9fd52079ab257860e969f25b1f3c14 |
--- /dev/null |
+++ b/webrtc/api/objc/RTCDataChannel.h |
@@ -0,0 +1,120 @@ |
+/* |
+ * 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> |
+ |
+NS_ASSUME_NONNULL_BEGIN |
+ |
+@interface RTCDataBuffer : NSObject |
+ |
+/** NSData representation of the underlying buffer. */ |
+@property(nonatomic, readonly) NSData *data; |
+ |
+/** Indicates whether |data| contains UTF-8 or binary data. */ |
+@property(nonatomic, readonly) BOOL isBinary; |
+ |
+- (instancetype)init NS_UNAVAILABLE; |
+ |
+/** |
+ * Initialize an RTCDataBuffer from NSData. |isBinary| indicates whether |data| |
+ * contains UTF-8 or binary data. |
+ */ |
+- (instancetype)initWithData:(NSData *)data isBinary:(BOOL)isBinary; |
+ |
+@end |
+ |
+ |
+@class RTCDataChannel; |
+ |
+@protocol RTCDataChannelDelegate <NSObject> |
+ |
+/** The data channel state changed. */ |
+- (void)dataChannelDidChangeState:(RTCDataChannel *)dataChannel; |
+ |
+/** The data channel successfully received a data buffer. */ |
+- (void)dataChannel:(RTCDataChannel *)dataChannel |
+ didReceiveMessageWithBuffer:(RTCDataBuffer *)buffer; |
+ |
+@optional |
+ |
+/** The data channel's |bufferedAmount| changed. */ |
+- (void)dataChannel:(RTCDataChannel *)dataChannel |
+ didChangeBufferedAmount:(NSUInteger)amount; |
+ |
+@end |
+ |
+ |
+/** Represents the state of the data channel. */ |
+typedef NS_ENUM(NSInteger, RTCDataChannelState) { |
+ RTCDataChannelStateConnecting, |
+ RTCDataChannelStateOpen, |
+ RTCDataChannelStateClosing, |
+ RTCDataChannelStateClosed, |
+}; |
+ |
+@interface RTCDataChannel : NSObject |
+ |
+/** |
+ * A label that can be used to distinguish this data channel from other data |
+ * channel objects. |
+ */ |
+@property(nonatomic, readonly) NSString *label; |
+ |
+/** Returns whether this data channel is ordered or not. */ |
+@property(nonatomic, readonly) BOOL isOrdered; |
+ |
+/** |
+ * The length of the time window (in milliseconds) during which transmissions |
+ * and retransmissions may occur in unreliable mode. |
+ */ |
+@property(nonatomic, readonly) NSUInteger maxPacketLifeTime; |
+ |
+/** |
+ * The maximum number of retransmissions that are attempted in unreliable mode. |
+ */ |
+@property(nonatomic, readonly) NSUInteger maxRetransmits; |
+ |
+/** |
+ * The name of the sub-protocol used with this data channel, if any. Otherwise |
+ * this returns an empty string. |
+ */ |
+@property(nonatomic, readonly) NSString *protocol; |
+ |
+/** |
+ * Returns whether this data channel was negotiated by the application or not. |
+ */ |
+@property(nonatomic, readonly) BOOL isNegotiated; |
+ |
+/** The identifier for this data channel. */ |
+@property(nonatomic, readonly) NSInteger id; |
+ |
+/** The state of the data channel. */ |
+@property(nonatomic, readonly) RTCDataChannelState readyState; |
+ |
+/** |
+ * The number of bytes of application data that have been queued using |
+ * |sendData:| but that have not yet been transmitted to the network. |
+ */ |
+@property(nonatomic, readonly) NSUInteger bufferedAmount; |
+ |
+/** The delegate for this data channel. */ |
+@property(nonatomic, weak) id<RTCDataChannelDelegate> delegate; |
+ |
+- (instancetype)init NS_UNAVAILABLE; |
+ |
+/** Closes the data channel. */ |
+- (void)close; |
+ |
+/** Attempt to send |data| on this data channel's underlying data transport. */ |
+- (BOOL)sendData:(RTCDataBuffer *)data; |
+ |
+@end |
+ |
+NS_ASSUME_NONNULL_END |