Skip to content

Commit 21fcf54

Browse files
committed
C++: eliminate FSTDispatchQueue and replace it with AsyncQueue.
1 parent 8c497e4 commit 21fcf54

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+200
-202
lines changed

Firestore/Example/Tests/API/FSTAPIHelpers.mm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
database:"abc"
5252
persistenceKey:@"db123"
5353
credentialsProvider:nil
54-
workerDispatchQueue:nil
54+
workerQueue:nil
5555
firebaseApp:nil];
5656
});
5757
#pragma clang diagnostic pop

Firestore/Example/Tests/Core/FSTQueryListenerTests.mm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333

3434
using firebase::firestore::model::DocumentKeySet;
3535
using firebase::firestore::model::OnlineState;
36-
using firebase::firestore::util::internal::ExecutorLibdispatch;
36+
using firebase::firestore::util::ExecutorLibdispatch;
3737

3838
NS_ASSUME_NONNULL_BEGIN
3939

Firestore/Example/Tests/Integration/API/FIRDatabaseTests.mm

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1205,7 +1205,7 @@ - (void)testWriteStreamReconnectsAfterIdle {
12051205
FIRFirestore *firestore = doc.firestore;
12061206

12071207
[self writeDocumentRef:doc data:@{@"foo" : @"bar"}];
1208-
[[self queueForFirestore:firestore] runDelayedCallbacksUntil:TimerId::WriteStreamIdle];
1208+
[self queueForFirestore:firestore] -> RunScheduledOperationsUntil(TimerId::WriteStreamIdle);
12091209
[self writeDocumentRef:doc data:@{@"foo" : @"bar"}];
12101210
}
12111211

@@ -1214,7 +1214,7 @@ - (void)testWatchStreamReconnectsAfterIdle {
12141214
FIRFirestore *firestore = doc.firestore;
12151215

12161216
[self readSnapshotForRef:[self documentRef] requireOnline:YES];
1217-
[[self queueForFirestore:firestore] runDelayedCallbacksUntil:TimerId::ListenStreamIdle];
1217+
[self queueForFirestore:firestore] -> RunScheduledOperationsUntil(TimerId::ListenStreamIdle);
12181218
[self readSnapshotForRef:[self documentRef] requireOnline:YES];
12191219
}
12201220

Firestore/Example/Tests/Integration/FSTDatastoreTests.mm

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
#import <FirebaseFirestore/FIRTimestamp.h>
2020
#import <XCTest/XCTest.h>
2121

22+
#include <memory>
23+
2224
#import "Firestore/Source/API/FIRDocumentReference+Internal.h"
2325
#import "Firestore/Source/API/FSTUserDataConverter.h"
2426
#import "Firestore/Source/Core/FSTFirestoreClient.h"
@@ -31,16 +33,18 @@
3133
#import "Firestore/Source/Remote/FSTDatastore.h"
3234
#import "Firestore/Source/Remote/FSTRemoteEvent.h"
3335
#import "Firestore/Source/Remote/FSTRemoteStore.h"
34-
#import "Firestore/Source/Util/FSTDispatchQueue.h"
3536

3637
#import "Firestore/Example/Tests/Util/FSTIntegrationTestCase.h"
3738

3839
#include "Firestore/core/src/firebase/firestore/auth/empty_credentials_provider.h"
3940
#include "Firestore/core/src/firebase/firestore/core/database_info.h"
4041
#include "Firestore/core/src/firebase/firestore/model/database_id.h"
4142
#include "Firestore/core/src/firebase/firestore/model/precondition.h"
43+
#include "Firestore/core/src/firebase/firestore/util/async_queue.h"
44+
#include "Firestore/core/src/firebase/firestore/util/executor_libdispatch.h"
4245
#include "Firestore/core/src/firebase/firestore/util/hard_assert.h"
4346
#include "Firestore/core/src/firebase/firestore/util/string_apple.h"
47+
#include "absl/memory/memory.h"
4448

4549
namespace util = firebase::firestore::util;
4650
using firebase::firestore::auth::EmptyCredentialsProvider;
@@ -51,6 +55,8 @@
5155
using firebase::firestore::model::Precondition;
5256
using firebase::firestore::model::TargetId;
5357
using firebase::firestore::remote::GrpcConnection;
58+
using firebase::firestore::util::AsyncQueue;
59+
using firebase::firestore::util::ExecutorLibdispatch;
5460

5561
NS_ASSUME_NONNULL_BEGIN
5662

@@ -146,7 +152,7 @@ @interface FSTDatastoreTests : XCTestCase
146152
@end
147153

148154
@implementation FSTDatastoreTests {
149-
FSTDispatchQueue *_testWorkerQueue;
155+
std::unique_ptr<AsyncQueue> _testWorkerQueue;
150156
FSTLocalStore *_localStore;
151157
EmptyCredentialsProvider _credentials;
152158

@@ -169,29 +175,26 @@ - (void)setUp {
169175
_databaseInfo =
170176
DatabaseInfo(database_id, "test-key", util::MakeString(settings.host), settings.sslEnabled);
171177

172-
_testWorkerQueue = [FSTDispatchQueue
173-
queueWith:dispatch_queue_create("com.google.firestore.FSTDatastoreTestsWorkerQueue",
174-
DISPATCH_QUEUE_SERIAL)];
175-
178+
dispatch_queue_t queue = dispatch_queue_create(
179+
"com.google.firestore.FSTDatastoreTestsWorkerQueue", DISPATCH_QUEUE_SERIAL);
180+
_testWorkerQueue = absl::make_unique<AsyncQueue>(absl::make_unique<ExecutorLibdispatch>(queue));
176181
_datastore = [FSTDatastore datastoreWithDatabase:&_databaseInfo
177-
workerDispatchQueue:_testWorkerQueue
182+
workerQueue:_testWorkerQueue.get()
178183
credentials:&_credentials];
179184

180185
_remoteStore = [[FSTRemoteStore alloc] initWithLocalStore:_localStore
181186
datastore:_datastore
182-
workerDispatchQueue:_testWorkerQueue];
187+
workerQueue:_testWorkerQueue.get()];
183188

184-
[_testWorkerQueue dispatchAsync:^() {
185-
[_remoteStore start];
186-
}];
189+
_testWorkerQueue->Enqueue([=] { [_remoteStore start]; });
187190
}
188191

189192
- (void)tearDown {
190193
XCTestExpectation *completion = [self expectationWithDescription:@"shutdown"];
191-
[_testWorkerQueue dispatchAsync:^{
194+
_testWorkerQueue->Enqueue([=] {
192195
[_remoteStore shutdown];
193196
[completion fulfill];
194-
}];
197+
});
195198
[self awaitExpectations];
196199

197200
[super tearDown];
@@ -219,12 +222,12 @@ - (void)testStreamingWrite {
219222
FSTMutationBatch *batch = [[FSTMutationBatch alloc] initWithBatchID:23
220223
localWriteTime:[FIRTimestamp timestamp]
221224
mutations:@[ mutation ]];
222-
[_testWorkerQueue dispatchAsync:^{
225+
_testWorkerQueue->Enqueue([=] {
223226
[_remoteStore addBatchToWritePipeline:batch];
224227
// The added batch won't be written immediately because write stream wasn't yet open --
225228
// trigger its opening.
226229
[_remoteStore fillWritePipeline];
227-
}];
230+
});
228231

229232
[self awaitExpectations];
230233
}

Firestore/Example/Tests/SpecTests/FSTMockDatastore.mm

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
#import "Firestore/Source/Model/FSTMutation.h"
2727
#import "Firestore/Source/Remote/FSTSerializerBeta.h"
2828
#import "Firestore/Source/Remote/FSTStream.h"
29-
#import "Firestore/Source/Util/FSTDispatchQueue.h"
3029

3130
#import "Firestore/Example/Tests/Remote/FSTWatchChange+Testing.h"
3231

@@ -37,6 +36,7 @@
3736
#include "Firestore/core/src/firebase/firestore/remote/connectivity_monitor.h"
3837
#include "Firestore/core/src/firebase/firestore/remote/grpc_connection.h"
3938
#include "Firestore/core/src/firebase/firestore/remote/stream.h"
39+
#include "Firestore/core/src/firebase/firestore/util/async_queue.h"
4040
#include "Firestore/core/src/firebase/firestore/util/log.h"
4141
#include "Firestore/core/src/firebase/firestore/util/string_apple.h"
4242
#include "Firestore/core/test/firebase/firestore/util/create_noop_connectivity_monitor.h"
@@ -249,12 +249,13 @@ int sent_mutations_count() const {
249249
@interface FSTMockDatastore ()
250250

251251
/** Properties implemented in FSTDatastore that are nonpublic. */
252-
@property(nonatomic, strong, readonly) FSTDispatchQueue *workerDispatchQueue;
253252
@property(nonatomic, assign, readonly) CredentialsProvider *credentials;
254253

255254
@end
256255

257256
@implementation FSTMockDatastore {
257+
AsyncQueue *_workerQueue;
258+
258259
std::shared_ptr<MockWatchStream> _watchStream;
259260
std::shared_ptr<MockWriteStream> _writeStream;
260261

@@ -266,24 +267,23 @@ @implementation FSTMockDatastore {
266267
#pragma mark - Overridden FSTDatastore methods.
267268

268269
- (instancetype)initWithDatabaseInfo:(const DatabaseInfo *)databaseInfo
269-
workerDispatchQueue:(FSTDispatchQueue *)workerDispatchQueue
270+
workerQueue:(AsyncQueue *)workerQueue
270271
credentials:(CredentialsProvider *)credentials {
271272
if (self = [super initWithDatabaseInfo:databaseInfo
272-
workerDispatchQueue:workerDispatchQueue
273+
workerQueue:workerQueue
273274
credentials:credentials]) {
274-
_workerDispatchQueue = workerDispatchQueue;
275+
_workerQueue = workerQueue;
275276
_credentials = credentials;
276277
_connectivityMonitor = CreateNoOpConnectivityMonitor();
277-
_grpcConnection =
278-
absl::make_unique<GrpcConnection>(*databaseInfo, [workerDispatchQueue implementation],
279-
&_grpcQueue, _connectivityMonitor.get());
278+
_grpcConnection = absl::make_unique<GrpcConnection>(*databaseInfo, workerQueue, &_grpcQueue,
279+
_connectivityMonitor.get());
280280
}
281281
return self;
282282
}
283283

284284
- (std::shared_ptr<WatchStream>)createWatchStreamWithDelegate:(id<FSTWatchStreamDelegate>)delegate {
285285
_watchStream = std::make_shared<MockWatchStream>(
286-
[self.workerDispatchQueue implementation], self.credentials,
286+
_workerQueue, self.credentials,
287287
[[FSTSerializerBeta alloc] initWithDatabaseID:&self.databaseInfo->database_id()],
288288
_grpcConnection.get(), delegate, self);
289289

@@ -292,7 +292,7 @@ - (instancetype)initWithDatabaseInfo:(const DatabaseInfo *)databaseInfo
292292

293293
- (std::shared_ptr<WriteStream>)createWriteStreamWithDelegate:(id<FSTWriteStreamDelegate>)delegate {
294294
_writeStream = std::make_shared<MockWriteStream>(
295-
[self.workerDispatchQueue implementation], self.credentials,
295+
_workerQueue, self.credentials,
296296
[[FSTSerializerBeta alloc] initWithDatabaseID:&self.databaseInfo->database_id()],
297297
_grpcConnection.get(), delegate, self);
298298

Firestore/Example/Tests/SpecTests/FSTSpecTests.mm

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
#include "Firestore/core/src/firebase/firestore/auth/user.h"
4141
#include "Firestore/core/src/firebase/firestore/model/document_key.h"
4242
#include "Firestore/core/src/firebase/firestore/model/snapshot_version.h"
43+
#include "Firestore/core/src/firebase/firestore/util/async_queue.h"
4344
#include "Firestore/core/src/firebase/firestore/util/hard_assert.h"
4445
#include "Firestore/core/src/firebase/firestore/util/log.h"
4546
#include "Firestore/core/src/firebase/firestore/util/string_apple.h"
@@ -51,6 +52,7 @@
5152
using firebase::firestore::model::DocumentKey;
5253
using firebase::firestore::model::SnapshotVersion;
5354
using firebase::firestore::model::TargetId;
55+
using firebase::firestore::util::TimerId;
5456

5557
NS_ASSUME_NONNULL_BEGIN
5658

@@ -372,19 +374,19 @@ - (void)doDrainQueue {
372374
}
373375

374376
- (void)doRunTimer:(NSString *)timer {
375-
FSTTimerID timerID;
377+
TimerId timerID;
376378
if ([timer isEqualToString:@"all"]) {
377-
timerID = FSTTimerIDAll;
379+
timerID = TimerId::All;
378380
} else if ([timer isEqualToString:@"listen_stream_idle"]) {
379-
timerID = FSTTimerIDListenStreamIdle;
381+
timerID = TimerId::ListenStreamIdle;
380382
} else if ([timer isEqualToString:@"listen_stream_connection_backoff"]) {
381-
timerID = FSTTimerIDListenStreamConnectionBackoff;
383+
timerID = TimerId::ListenStreamConnectionBackoff;
382384
} else if ([timer isEqualToString:@"write_stream_idle"]) {
383-
timerID = FSTTimerIDWriteStreamIdle;
385+
timerID = TimerId::WriteStreamIdle;
384386
} else if ([timer isEqualToString:@"write_stream_connection_backoff"]) {
385-
timerID = FSTTimerIDWriteStreamConnectionBackoff;
387+
timerID = TimerId::WriteStreamConnectionBackoff;
386388
} else if ([timer isEqualToString:@"online_state_timeout"]) {
387-
timerID = FSTTimerIDOnlineStateTimeout;
389+
timerID = TimerId::OnlineStateTimeout;
388390
} else {
389391
HARD_FAIL("runTimer spec step specified unknown timer: %s", timer);
390392
}

0 commit comments

Comments
 (0)