1 /* 2 * Copyright 2015 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 <AvailabilityMacros.h> 12 #import <Foundation/Foundation.h> 13 14 #import "RTCMacros.h" 15 16 NS_ASSUME_NONNULL_BEGIN 17 18 RTC_OBJC_EXPORT 19 @interface RTC_OBJC_TYPE (RTCDataBuffer) : NSObject 20 21 /** NSData representation of the underlying buffer. */ 22 @property(nonatomic, readonly) NSData *data; 23 24 /** Indicates whether |data| contains UTF-8 or binary data. */ 25 @property(nonatomic, readonly) BOOL isBinary; 26 27 - (instancetype)init NS_UNAVAILABLE; 28 29 /** 30 * Initialize an RTCDataBuffer from NSData. |isBinary| indicates whether |data| 31 * contains UTF-8 or binary data. 32 */ 33 - (instancetype)initWithData:(NSData *)data isBinary:(BOOL)isBinary; 34 35 @end 36 37 @class RTC_OBJC_TYPE(RTCDataChannel); 38 RTC_OBJC_EXPORT 39 @protocol RTC_OBJC_TYPE 40 (RTCDataChannelDelegate)<NSObject> 41 42 /** The data channel state changed. */ 43 - (void)dataChannelDidChangeState : (RTC_OBJC_TYPE(RTCDataChannel) *)dataChannel; 44 45 /** The data channel successfully received a data buffer. */ 46 - (void)dataChannel:(RTC_OBJC_TYPE(RTCDataChannel) *)dataChannel 47 didReceiveMessageWithBuffer:(RTC_OBJC_TYPE(RTCDataBuffer) *)buffer; 48 49 @optional 50 /** The data channel's |bufferedAmount| changed. */ 51 - (void)dataChannel:(RTC_OBJC_TYPE(RTCDataChannel) *)dataChannel 52 didChangeBufferedAmount:(uint64_t)amount; 53 54 @end 55 56 /** Represents the state of the data channel. */ 57 typedef NS_ENUM(NSInteger, RTCDataChannelState) { 58 RTCDataChannelStateConnecting, 59 RTCDataChannelStateOpen, 60 RTCDataChannelStateClosing, 61 RTCDataChannelStateClosed, 62 }; 63 64 RTC_OBJC_EXPORT 65 @interface RTC_OBJC_TYPE (RTCDataChannel) : NSObject 66 67 /** 68 * A label that can be used to distinguish this data channel from other data 69 * channel objects. 70 */ 71 @property(nonatomic, readonly) NSString *label; 72 73 /** Whether the data channel can send messages in unreliable mode. */ 74 @property(nonatomic, readonly) BOOL isReliable DEPRECATED_ATTRIBUTE; 75 76 /** Returns whether this data channel is ordered or not. */ 77 @property(nonatomic, readonly) BOOL isOrdered; 78 79 /** Deprecated. Use maxPacketLifeTime. */ 80 @property(nonatomic, readonly) NSUInteger maxRetransmitTime DEPRECATED_ATTRIBUTE; 81 82 /** 83 * The length of the time window (in milliseconds) during which transmissions 84 * and retransmissions may occur in unreliable mode. 85 */ 86 @property(nonatomic, readonly) uint16_t maxPacketLifeTime; 87 88 /** 89 * The maximum number of retransmissions that are attempted in unreliable mode. 90 */ 91 @property(nonatomic, readonly) uint16_t maxRetransmits; 92 93 /** 94 * The name of the sub-protocol used with this data channel, if any. Otherwise 95 * this returns an empty string. 96 */ 97 @property(nonatomic, readonly) NSString *protocol; 98 99 /** 100 * Returns whether this data channel was negotiated by the application or not. 101 */ 102 @property(nonatomic, readonly) BOOL isNegotiated; 103 104 /** Deprecated. Use channelId. */ 105 @property(nonatomic, readonly) NSInteger streamId DEPRECATED_ATTRIBUTE; 106 107 /** The identifier for this data channel. */ 108 @property(nonatomic, readonly) int channelId; 109 110 /** The state of the data channel. */ 111 @property(nonatomic, readonly) RTCDataChannelState readyState; 112 113 /** 114 * The number of bytes of application data that have been queued using 115 * |sendData:| but that have not yet been transmitted to the network. 116 */ 117 @property(nonatomic, readonly) uint64_t bufferedAmount; 118 119 /** The delegate for this data channel. */ 120 @property(nonatomic, weak) id<RTC_OBJC_TYPE(RTCDataChannelDelegate)> delegate; 121 122 - (instancetype)init NS_UNAVAILABLE; 123 124 /** Closes the data channel. */ 125 - (void)close; 126 127 /** Attempt to send |data| on this data channel's underlying data transport. */ 128 - (BOOL)sendData:(RTC_OBJC_TYPE(RTCDataBuffer) *)data; 129 130 @end 131 132 NS_ASSUME_NONNULL_END 133