From f6ddefd806dc2cb7bad9444b2b1cbdf3b88fa6e9 Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Thu, 21 Jul 2022 17:49:46 +0100
Subject: [PATCH] Add CmixStopNetworkFollower functor

---
 Sources/ElixxirDAppsSDK/Cmix.swift            |  7 ++++--
 .../CmixStopNetworkFollower.swift             | 22 +++++++++++++++++
 .../Legacy/NetworkFollowerStopper.swift       | 24 -------------------
 3 files changed, 27 insertions(+), 26 deletions(-)
 create mode 100644 Sources/ElixxirDAppsSDK/CmixStopNetworkFollower.swift
 delete mode 100644 Sources/ElixxirDAppsSDK/Legacy/NetworkFollowerStopper.swift

diff --git a/Sources/ElixxirDAppsSDK/Cmix.swift b/Sources/ElixxirDAppsSDK/Cmix.swift
index 2e8fd4af..d98031d6 100644
--- a/Sources/ElixxirDAppsSDK/Cmix.swift
+++ b/Sources/ElixxirDAppsSDK/Cmix.swift
@@ -7,6 +7,7 @@ public struct Cmix {
   public var hasRunningProcesses: CmixHasRunningProcesses
   public var networkFollowerStatus: CmixNetworkFollowerStatus
   public var startNetworkFollower: CmixStartNetworkFollower
+  public var stopNetworkFollower: CmixStopNetworkFollower
 }
 
 extension Cmix {
@@ -17,7 +18,8 @@ extension Cmix {
       isHealthy: .live(bindingsCmix),
       hasRunningProcesses: .live(bindingsCmix),
       networkFollowerStatus: .live(bindingsCmix),
-      startNetworkFollower: .live(bindingsCmix)
+      startNetworkFollower: .live(bindingsCmix),
+      stopNetworkFollower: .live(bindingsCmix)
     )
   }
 }
@@ -29,6 +31,7 @@ extension Cmix {
     isHealthy: .unimplemented,
     hasRunningProcesses: .unimplemented,
     networkFollowerStatus: .unimplemented,
-    startNetworkFollower: .unimplemented
+    startNetworkFollower: .unimplemented,
+    stopNetworkFollower: .unimplemented
   )
 }
diff --git a/Sources/ElixxirDAppsSDK/CmixStopNetworkFollower.swift b/Sources/ElixxirDAppsSDK/CmixStopNetworkFollower.swift
new file mode 100644
index 00000000..140a415e
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/CmixStopNetworkFollower.swift
@@ -0,0 +1,22 @@
+import Bindings
+import XCTestDynamicOverlay
+
+public struct CmixStopNetworkFollower {
+  public var run: () throws -> Void
+
+  public func callAsFunction() throws {
+    try run()
+  }
+}
+
+extension CmixStopNetworkFollower {
+  public static func live(_ bindingsCmix: BindingsCmix) -> CmixStopNetworkFollower {
+    CmixStopNetworkFollower(run: bindingsCmix.stopNetworkFollower)
+  }
+}
+
+extension CmixStopNetworkFollower {
+  public static let unimplemented = CmixStopNetworkFollower(
+    run: XCTUnimplemented("\(Self.self)")
+  )
+}
diff --git a/Sources/ElixxirDAppsSDK/Legacy/NetworkFollowerStopper.swift b/Sources/ElixxirDAppsSDK/Legacy/NetworkFollowerStopper.swift
deleted file mode 100644
index 1b8ed6ab..00000000
--- a/Sources/ElixxirDAppsSDK/Legacy/NetworkFollowerStopper.swift
+++ /dev/null
@@ -1,24 +0,0 @@
-import Bindings
-
-public struct NetworkFollowerStopper {
-  public var stop: () throws -> Void
-
-  public func callAsFunction() throws {
-    try stop()
-  }
-}
-
-extension NetworkFollowerStopper {
-  public static func live(bindingsClient: BindingsCmix) -> NetworkFollowerStopper {
-    NetworkFollowerStopper(stop: bindingsClient.stopNetworkFollower)
-  }
-}
-
-#if DEBUG
-extension NetworkFollowerStopper {
-  public static let failing = NetworkFollowerStopper {
-    struct NotImplemented: Error {}
-    throw NotImplemented()
-  }
-}
-#endif
-- 
GitLab