Remove class check and make data constraint to NSData (#22633)

Summary:
We always use `NSData` to send, for the `NSString` support, we already transform to `NSData` before call `_sendFrameWithOpcode` method. So we can remove these class check.

Changelog:
----------
[iOS] [Changed] [RCTSRWebSocket] - Remove class check and make data parameter of `_sendFrameWithOpcode` constraint to `NSData`
Pull Request resolved: https://github.com/facebook/react-native/pull/22633

Differential Revision: D14320451

Pulled By: cpojer

fbshipit-source-id: 63ac194d08965d7518a8ac38eea77fd5b43b6147
This commit is contained in:
zhongwuzw 2019-03-04 22:30:54 -08:00 коммит произвёл Facebook Github Bot
Родитель 1889b797d3
Коммит 8491cc36dd
1 изменённых файлов: 6 добавлений и 14 удалений

Просмотреть файл

@ -645,6 +645,9 @@ RCT_NOT_IMPLEMENTED(- (instancetype)init)
- (void)send:(id)data;
{
RCTAssert(self.readyState != RCTSR_CONNECTING, @"Invalid State: Cannot call send: until connection is open");
if (nil == data) {
return;
}
// TODO: maybe not copy this for performance
data = [data copy];
dispatch_async(_workQueue, ^{
@ -652,8 +655,6 @@ RCT_NOT_IMPLEMENTED(- (instancetype)init)
[self _sendFrameWithOpcode:RCTSROpCodeTextFrame data:[(NSString *)data dataUsingEncoding:NSUTF8StringEncoding]];
} else if ([data isKindOfClass:[NSData class]]) {
[self _sendFrameWithOpcode:RCTSROpCodeBinaryFrame data:data];
} else if (data == nil) {
[self _sendFrameWithOpcode:RCTSROpCodeTextFrame data:data];
} else {
assert(NO);
}
@ -1223,7 +1224,7 @@ static const char CRLFCRLFBytes[] = {'\r', '\n', '\r', '\n'};
static const size_t RCTSRFrameHeaderOverhead = 32;
- (void)_sendFrameWithOpcode:(RCTSROpCode)opcode data:(id)data;
- (void)_sendFrameWithOpcode:(RCTSROpCode)opcode data:(NSData *)data;
{
[self assertOnWorkQueue];
@ -1231,9 +1232,7 @@ static const size_t RCTSRFrameHeaderOverhead = 32;
return;
}
RCTAssert([data isKindOfClass:[NSData class]] || [data isKindOfClass:[NSString class]], @"NSString or NSData");
size_t payloadLength = [data isKindOfClass:[NSString class]] ? [(NSString *)data lengthOfBytesUsingEncoding:NSUTF8StringEncoding] : [data length];
size_t payloadLength = [data length];
NSMutableData *frame = [[NSMutableData alloc] initWithLength:payloadLength + RCTSRFrameHeaderOverhead];
if (!frame) {
@ -1257,14 +1256,7 @@ static const size_t RCTSRFrameHeaderOverhead = 32;
size_t frame_buffer_size = 2;
const uint8_t *unmasked_payload = NULL;
if ([data isKindOfClass:[NSData class]]) {
unmasked_payload = (uint8_t *)[data bytes];
} else if ([data isKindOfClass:[NSString class]]) {
unmasked_payload = (const uint8_t *)[data UTF8String];
} else {
return;
}
const uint8_t *unmasked_payload = (uint8_t *)[data bytes];
if (payloadLength < 126) {
frame_buffer[1] |= payloadLength;