Skip to content

Commit 678be41

Browse files
Merge branch '159-fix-trigger-reconnect-result' into 'main'
Don't throw on triggerReconnect failure #159 See merge request objectbox/objectbox-dart!118
2 parents 88521ea + 8105f6c commit 678be41

File tree

2 files changed

+17
-10
lines changed

2 files changed

+17
-10
lines changed

objectbox/lib/src/native/sync.dart

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -407,14 +407,13 @@ class SyncClient {
407407
checkObx(C.sync_stop(_ptr));
408408
}
409409

410-
/// Triggers a reconnection attempt immediately.
410+
/// Triggers a reconnection attempt immediately. Returns if a reconnect was
411+
/// actually triggered.
411412
///
412413
/// By default, an increasing backoff interval is used for reconnection
413414
/// attempts. But sometimes the code using this API has additional knowledge
414415
/// and can initiate a reconnection attempt sooner.
415-
void triggerReconnect() {
416-
checkObx(C.sync_trigger_reconnect(_ptr));
417-
}
416+
bool triggerReconnect() => checkObxSuccess(C.sync_trigger_reconnect(_ptr));
418417

419418
/// Request updates since we last synchronized our database.
420419
///

objectbox_test/test/sync_test.dart

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ void main() {
207207
expect(() => c.setRequestUpdatesMode(SyncRequestUpdatesMode.auto), error);
208208
});
209209

210-
test('SyncClient simple coverage (no server available)', () {
210+
test('SyncClient simple coverage (no server available)', () async {
211211
SyncClient c = createClient(store);
212212
expect(c.isClosed(), isFalse);
213213

@@ -234,12 +234,20 @@ void main() {
234234
expect(c.requestUpdates(subscribeForFuturePushes: true), isFalse);
235235
expect(c.requestUpdates(subscribeForFuturePushes: false), isFalse);
236236
expect(c.outgoingMessageCount(), isZero);
237-
if (Platform.isWindows) {
238-
print(
239-
'Skipping triggerReconnect on Windows, needs fixing, see objectbox-dart#159');
240-
} else {
241-
c.triggerReconnect();
237+
// Wait until client reaches state disconnected (as there is no server),
238+
// only then reconnect will be attempted.
239+
var waitedForDisconnected = 0;
240+
while (c.state() != SyncState.disconnected) {
241+
if (waitedForDisconnected == 0) {
242+
print('Waiting until SyncClient state is disconnected...');
243+
}
244+
if (waitedForDisconnected == 50) {
245+
fail('SyncClient did not reach disconnected state within 5 seconds');
246+
}
247+
await Future.delayed(const Duration(milliseconds: 100));
248+
waitedForDisconnected++;
242249
}
250+
expect(c.triggerReconnect(), true);
243251
c.stop();
244252
expect(c.state(), equals(SyncState.stopped));
245253
});

0 commit comments

Comments
 (0)