19
19
#import < FirebaseFirestore/FIRTimestamp.h>
20
20
#import < XCTest/XCTest.h>
21
21
22
+ #include < memory>
23
+
22
24
#import " Firestore/Source/API/FIRDocumentReference+Internal.h"
23
25
#import " Firestore/Source/API/FSTUserDataConverter.h"
24
26
#import " Firestore/Source/Core/FSTFirestoreClient.h"
31
33
#import " Firestore/Source/Remote/FSTDatastore.h"
32
34
#import " Firestore/Source/Remote/FSTRemoteEvent.h"
33
35
#import " Firestore/Source/Remote/FSTRemoteStore.h"
34
- #import " Firestore/Source/Util/FSTDispatchQueue.h"
35
36
36
37
#import " Firestore/Example/Tests/Util/FSTIntegrationTestCase.h"
37
38
38
39
#include " Firestore/core/src/firebase/firestore/auth/empty_credentials_provider.h"
39
40
#include " Firestore/core/src/firebase/firestore/core/database_info.h"
40
41
#include " Firestore/core/src/firebase/firestore/model/database_id.h"
41
42
#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"
42
45
#include " Firestore/core/src/firebase/firestore/util/hard_assert.h"
43
46
#include " Firestore/core/src/firebase/firestore/util/string_apple.h"
47
+ #include " absl/memory/memory.h"
44
48
45
49
namespace util = firebase::firestore::util;
46
50
using firebase::firestore::auth::EmptyCredentialsProvider;
51
55
using firebase::firestore::model::Precondition;
52
56
using firebase::firestore::model::TargetId;
53
57
using firebase::firestore::remote::GrpcConnection;
58
+ using firebase::firestore::util::AsyncQueue;
59
+ using firebase::firestore::util::ExecutorLibdispatch;
54
60
55
61
NS_ASSUME_NONNULL_BEGIN
56
62
@@ -146,7 +152,7 @@ @interface FSTDatastoreTests : XCTestCase
146
152
@end
147
153
148
154
@implementation FSTDatastoreTests {
149
- FSTDispatchQueue * _testWorkerQueue;
155
+ std::unique_ptr<AsyncQueue> _testWorkerQueue;
150
156
FSTLocalStore *_localStore;
151
157
EmptyCredentialsProvider _credentials;
152
158
@@ -169,29 +175,26 @@ - (void)setUp {
169
175
_databaseInfo =
170
176
DatabaseInfo (database_id, " test-key" , util::MakeString (settings.host ), settings.sslEnabled );
171
177
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));
176
181
_datastore = [FSTDatastore datastoreWithDatabase: &_databaseInfo
177
- workerDispatchQueue : _testWorkerQueue
182
+ workerQueue : _testWorkerQueue. get ()
178
183
credentials: &_credentials];
179
184
180
185
_remoteStore = [[FSTRemoteStore alloc ] initWithLocalStore: _localStore
181
186
datastore: _datastore
182
- workerDispatchQueue : _testWorkerQueue];
187
+ workerQueue : _testWorkerQueue. get () ];
183
188
184
- [_testWorkerQueue dispatchAsync: ^() {
185
- [_remoteStore start ];
186
- }];
189
+ _testWorkerQueue->Enqueue ([=] { [_remoteStore start ]; });
187
190
}
188
191
189
192
- (void )tearDown {
190
193
XCTestExpectation *completion = [self expectationWithDescription: @" shutdown" ];
191
- [ _testWorkerQueue dispatchAsync: ^ {
194
+ _testWorkerQueue-> Enqueue ([=] {
192
195
[_remoteStore shutdown ];
193
196
[completion fulfill ];
194
- }] ;
197
+ }) ;
195
198
[self awaitExpectations ];
196
199
197
200
[super tearDown ];
@@ -219,12 +222,12 @@ - (void)testStreamingWrite {
219
222
FSTMutationBatch *batch = [[FSTMutationBatch alloc ] initWithBatchID: 23
220
223
localWriteTime: [FIRTimestamp timestamp ]
221
224
mutations: @[ mutation ]];
222
- [ _testWorkerQueue dispatchAsync: ^ {
225
+ _testWorkerQueue-> Enqueue ([=] {
223
226
[_remoteStore addBatchToWritePipeline: batch];
224
227
// The added batch won't be written immediately because write stream wasn't yet open --
225
228
// trigger its opening.
226
229
[_remoteStore fillWritePipeline ];
227
- }] ;
230
+ }) ;
228
231
229
232
[self awaitExpectations ];
230
233
}
0 commit comments