aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firestore/Source/Remote/FSTStream.mm
diff options
context:
space:
mode:
Diffstat (limited to 'Firestore/Source/Remote/FSTStream.mm')
-rw-r--r--Firestore/Source/Remote/FSTStream.mm42
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