From bcd5306e5267ef67ea2a65973e3b8368fb737d0a Mon Sep 17 00:00:00 2001 From: Dariusz Rybicki <dariusz@elixxir.io> Date: Thu, 2 Jun 2022 22:06:42 +0200 Subject: [PATCH] Add NetworkFollowerStopper --- Sources/ElixxirDAppsSDK/NetworkFollower.swift | 7 ++++-- .../NetworkFollowerStopper.swift | 24 +++++++++++++++++++ 2 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 Sources/ElixxirDAppsSDK/NetworkFollowerStopper.swift diff --git a/Sources/ElixxirDAppsSDK/NetworkFollower.swift b/Sources/ElixxirDAppsSDK/NetworkFollower.swift index 31dab090..40e8b530 100644 --- a/Sources/ElixxirDAppsSDK/NetworkFollower.swift +++ b/Sources/ElixxirDAppsSDK/NetworkFollower.swift @@ -3,13 +3,15 @@ import Bindings public struct NetworkFollower { public var status: NetworkFollowerStatusProvider public var start: NetworkFollowerStarter + public var stop: NetworkFollowerStopper } extension NetworkFollower { public static func live(bindingsClient: BindingsClient) -> NetworkFollower { NetworkFollower( status: .live(bindingsClient: bindingsClient), - start: .live(bindingsClient: bindingsClient) + start: .live(bindingsClient: bindingsClient), + stop: .live(bindingsClient: bindingsClient) ) } } @@ -18,7 +20,8 @@ extension NetworkFollower { extension NetworkFollower { public static let failing = NetworkFollower( status: .failing, - start: .failing + start: .failing, + stop: .failing ) } #endif diff --git a/Sources/ElixxirDAppsSDK/NetworkFollowerStopper.swift b/Sources/ElixxirDAppsSDK/NetworkFollowerStopper.swift new file mode 100644 index 00000000..dfe95111 --- /dev/null +++ b/Sources/ElixxirDAppsSDK/NetworkFollowerStopper.swift @@ -0,0 +1,24 @@ +import Bindings + +public struct NetworkFollowerStopper { + public var stop: () throws -> Void + + public func callAsFunction() throws { + try stop() + } +} + +extension NetworkFollowerStopper { + public static func live(bindingsClient: BindingsClient) -> NetworkFollowerStopper { + NetworkFollowerStopper(stop: bindingsClient.stopNetworkFollower) + } +} + +#if DEBUG +extension NetworkFollowerStopper { + public static let failing = NetworkFollowerStopper { + struct NotImplemented: Error {} + throw NotImplemented() + } +} +#endif -- GitLab