diff options
| author | Andrej Mihajlov <and@mullvad.net> | 2021-09-14 11:03:18 +0200 |
|---|---|---|
| committer | Andrej Mihajlov <and@mullvad.net> | 2021-09-15 10:58:44 +0200 |
| commit | dad9e58507b2ec799e39a047be429ca28fd24c80 (patch) | |
| tree | 0eb0b60b92ab56745fd3519b97364f0f6ee1eafa /ios | |
| parent | 1cfcf0ea19cfd01aea0b59cae10bc46ecb9dab95 (diff) | |
| download | mullvadvpn-dad9e58507b2ec799e39a047be429ca28fd24c80.tar.xz mullvadvpn-dad9e58507b2ec799e39a047be429ca28fd24c80.zip | |
PromiseCancellationToken: add cancel() to trigger cancellation
Diffstat (limited to 'ios')
| -rw-r--r-- | ios/MullvadVPN/Promise/Promise.swift | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/ios/MullvadVPN/Promise/Promise.swift b/ios/MullvadVPN/Promise/Promise.swift index d1466e6dc6..df78aced85 100644 --- a/ios/MullvadVPN/Promise/Promise.swift +++ b/ios/MullvadVPN/Promise/Promise.swift @@ -208,13 +208,22 @@ final class Promise<Value> { } final class PromiseCancellationToken { - private let handler: () -> Void + private var handler: (() -> Void)? + private let lock = NSLock() + fileprivate init(_ handler: @escaping () -> Void) { self.handler = handler } + func cancel() { + lock.withCriticalBlock { + self.handler?() + self.handler = nil + } + } + deinit { - handler() + cancel() } } |
