diff options
Diffstat (limited to 'Firestore/Source/Remote/FSTStream.mm')
-rw-r--r-- | Firestore/Source/Remote/FSTStream.mm | 42 |
1 files changed, 22 insertions, 20 deletions
diff --git a/Firestore/Source/Remote/FSTStream.mm b/Firestore/Source/Remote/FSTStream.mm index 44e3ef0..019b0bc 100644 --- a/Firestore/Source/Remote/FSTStream.mm +++ b/Firestore/Source/Remote/FSTStream.mm @@ -564,24 +564,25 @@ static const NSTimeInterval kIdleTimeout = 60.0; * the RPC. */ - (void)writeValue:(id)value { - [self.workerDispatchQueue verifyIsCurrentQueue]; - FSTAssert([self isStarted], @"writeValue: called for stopped stream."); - - if (!self.messageReceived) { - self.messageReceived = YES; - if ([FIRFirestore isLoggingEnabled]) { - FSTLog(@"%@ %p headers (whitelisted): %@", NSStringFromClass([self class]), - (__bridge void *)self, - [FSTDatastore extractWhiteListedHeaders:self.rpc.responseHeaders]); + [self.workerDispatchQueue enterCheckedOperation:^{ + FSTAssert([self isStarted], @"writeValue: called for stopped stream."); + + if (!self.messageReceived) { + self.messageReceived = YES; + if ([FIRFirestore isLoggingEnabled]) { + FSTLog(@"%@ %p headers (whitelisted): %@", NSStringFromClass([self class]), + (__bridge void *)self, + [FSTDatastore extractWhiteListedHeaders:self.rpc.responseHeaders]); + } } - } - NSError *error; - id proto = [self parseProto:self.responseMessageClass data:value error:&error]; - if (proto) { - [self handleStreamMessage:proto]; - } else { - [_rpc finishWithError:error]; - } + NSError *error; + id proto = [self parseProto:self.responseMessageClass data:value error:&error]; + if (proto) { + [self handleStreamMessage:proto]; + } else { + [self.rpc finishWithError:error]; + } + }]; } /** @@ -597,10 +598,11 @@ static const NSTimeInterval kIdleTimeout = 60.0; */ - (void)writesFinishedWithError:(nullable NSError *)error __used { error = [FSTDatastore firestoreErrorForError:error]; - [self.workerDispatchQueue verifyIsCurrentQueue]; - FSTAssert([self isStarted], @"writesFinishedWithError: called for stopped stream."); + [self.workerDispatchQueue enterCheckedOperation:^{ + FSTAssert([self isStarted], @"writesFinishedWithError: called for stopped stream."); - [self handleStreamClose:error]; + [self handleStreamClose:error]; + }]; } @end |