From 5c526ab81f33b58230ea9a389ebdcc6fbc8db3e0 Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Thu, 21 Jul 2022 17:47:17 +0100
Subject: [PATCH] Add CmixStartNetworkFollower functor

---
 Sources/ElixxirDAppsSDK/Cmix.swift            |  7 ++-
 .../CmixStartNetworkFollower.swift            | 24 +++++++++
 .../Legacy/NetworkFollower.swift              | 54 +++++++++----------
 .../Legacy/NetworkFollowerStarter.swift       | 26 ---------
 4 files changed, 56 insertions(+), 55 deletions(-)
 create mode 100644 Sources/ElixxirDAppsSDK/CmixStartNetworkFollower.swift
 delete mode 100644 Sources/ElixxirDAppsSDK/Legacy/NetworkFollowerStarter.swift

diff --git a/Sources/ElixxirDAppsSDK/Cmix.swift b/Sources/ElixxirDAppsSDK/Cmix.swift
index a0bcced7..2e8fd4af 100644
--- a/Sources/ElixxirDAppsSDK/Cmix.swift
+++ b/Sources/ElixxirDAppsSDK/Cmix.swift
@@ -6,6 +6,7 @@ public struct Cmix {
   public var isHealthy: CmixIsHealthy
   public var hasRunningProcesses: CmixHasRunningProcesses
   public var networkFollowerStatus: CmixNetworkFollowerStatus
+  public var startNetworkFollower: CmixStartNetworkFollower
 }
 
 extension Cmix {
@@ -15,7 +16,8 @@ extension Cmix {
       makeReceptionIdentity: .live(bindingsCmix),
       isHealthy: .live(bindingsCmix),
       hasRunningProcesses: .live(bindingsCmix),
-      networkFollowerStatus: .live(bindingsCmix)
+      networkFollowerStatus: .live(bindingsCmix),
+      startNetworkFollower: .live(bindingsCmix)
     )
   }
 }
@@ -26,6 +28,7 @@ extension Cmix {
     makeReceptionIdentity: .unimplemented,
     isHealthy: .unimplemented,
     hasRunningProcesses: .unimplemented,
-    networkFollowerStatus: .unimplemented
+    networkFollowerStatus: .unimplemented,
+    startNetworkFollower: .unimplemented
   )
 }
diff --git a/Sources/ElixxirDAppsSDK/CmixStartNetworkFollower.swift b/Sources/ElixxirDAppsSDK/CmixStartNetworkFollower.swift
new file mode 100644
index 00000000..c5947bcd
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/CmixStartNetworkFollower.swift
@@ -0,0 +1,24 @@
+import Bindings
+import XCTestDynamicOverlay
+
+public struct CmixStartNetworkFollower {
+  public var start: (Int) throws -> Void
+
+  public func callAsFunction(timeoutMS: Int) throws {
+    try start(timeoutMS)
+  }
+}
+
+extension CmixStartNetworkFollower {
+  public static func live(_ bindingsCmix: BindingsCmix) -> CmixStartNetworkFollower {
+    CmixStartNetworkFollower { timeoutMS in
+      try bindingsCmix.startNetworkFollower(timeoutMS)
+    }
+  }
+}
+
+extension CmixStartNetworkFollower {
+  public static let unimplemented = CmixStartNetworkFollower(
+    start: XCTUnimplemented("\(Self.self)")
+  )
+}
diff --git a/Sources/ElixxirDAppsSDK/Legacy/NetworkFollower.swift b/Sources/ElixxirDAppsSDK/Legacy/NetworkFollower.swift
index d4afa8c7..f4b748fc 100644
--- a/Sources/ElixxirDAppsSDK/Legacy/NetworkFollower.swift
+++ b/Sources/ElixxirDAppsSDK/Legacy/NetworkFollower.swift
@@ -1,27 +1,27 @@
-import Bindings
-
-public struct NetworkFollower {
-  public var status: NetworkFollowerStatusProvider
-  public var start: NetworkFollowerStarter
-  public var stop: NetworkFollowerStopper
-}
-
-extension NetworkFollower {
-  public static func live(bindingsClient: BindingsCmix) -> NetworkFollower {
-    NetworkFollower(
-      status: .live(bindingsClient: bindingsClient),
-      start: .live(bindingsClient: bindingsClient),
-      stop: .live(bindingsClient: bindingsClient)
-    )
-  }
-}
-
-#if DEBUG
-extension NetworkFollower {
-  public static let failing = NetworkFollower(
-    status: .failing,
-    start: .failing,
-    stop: .failing
-  )
-}
-#endif
+//import Bindings
+//
+//public struct NetworkFollower {
+//  public var status: NetworkFollowerStatusProvider
+//  public var start: NetworkFollowerStarter
+//  public var stop: NetworkFollowerStopper
+//}
+//
+//extension NetworkFollower {
+//  public static func live(bindingsClient: BindingsCmix) -> NetworkFollower {
+//    NetworkFollower(
+//      status: .live(bindingsClient: bindingsClient),
+//      start: .live(bindingsClient: bindingsClient),
+//      stop: .live(bindingsClient: bindingsClient)
+//    )
+//  }
+//}
+//
+//#if DEBUG
+//extension NetworkFollower {
+//  public static let failing = NetworkFollower(
+//    status: .failing,
+//    start: .failing,
+//    stop: .failing
+//  )
+//}
+//#endif
diff --git a/Sources/ElixxirDAppsSDK/Legacy/NetworkFollowerStarter.swift b/Sources/ElixxirDAppsSDK/Legacy/NetworkFollowerStarter.swift
deleted file mode 100644
index 3bc7a460..00000000
--- a/Sources/ElixxirDAppsSDK/Legacy/NetworkFollowerStarter.swift
+++ /dev/null
@@ -1,26 +0,0 @@
-import Bindings
-
-public struct NetworkFollowerStarter {
-  public var start: (_ timeoutMS: Int) throws -> Void
-
-  public func callAsFunction(timeoutMS: Int) throws {
-    try start(timeoutMS)
-  }
-}
-
-extension NetworkFollowerStarter {
-  public static func live(bindingsClient: BindingsCmix) -> NetworkFollowerStarter {
-    NetworkFollowerStarter { timeoutMS in
-      try bindingsClient.startNetworkFollower(timeoutMS)
-    }
-  }
-}
-
-#if DEBUG
-extension NetworkFollowerStarter {
-  public static let failing = NetworkFollowerStarter { _ in
-    struct NotImplemented: Error {}
-    throw NotImplemented()
-  }
-}
-#endif
-- 
GitLab