From 6466c35737eff21e9b48c3ce2353d42628f4bb77 Mon Sep 17 00:00:00 2001 From: Konstantin Varlamov Date: Tue, 10 Jul 2018 17:45:16 -0400 Subject: C++ migration: add a C++ implementation of `FSTExponentialBackoff` (#1465) This is a pretty close port of `FSTExponentialBackoff`. The changes are pretty minor: * delay is calculated using duration types, not plain numbers, which should be a little more type-safe; * split a piece of code into a ClampDelay function, because it's reasonably close to std::clamp; * rephrased the class-level comment to make it clearer that the first attempt always has delay = 0; * added simple tests (other platforms don't have tests for this). Also make sure that canceling a DelayedOperation is always valid. --- Firestore/core/src/firebase/firestore/util/executor.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'Firestore/core/src/firebase/firestore/util/executor.h') diff --git a/Firestore/core/src/firebase/firestore/util/executor.h b/Firestore/core/src/firebase/firestore/util/executor.h index df8b0b5..ea67b17 100644 --- a/Firestore/core/src/firebase/firestore/util/executor.h +++ b/Firestore/core/src/firebase/firestore/util/executor.h @@ -38,7 +38,9 @@ class DelayedOperation { // If the operation has not been run yet, cancels the operation. Otherwise, // this function is a no-op. void Cancel() { - cancel_func_(); + if (cancel_func_) { + cancel_func_(); + } } // Internal use only. -- cgit v1.2.3