From ee3ce54758032957ba58ef8318458d6e10305372 Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Tue, 8 Nov 2022 21:11:36 +0100
Subject: [PATCH] Add CMixTrackServicesWithIdentity

---
 Sources/XXClient/CMix/CMix.swift              |  7 +++--
 .../CMixTrackServicesWithIdentity.swift       | 30 +++++++++++++++++++
 2 files changed, 35 insertions(+), 2 deletions(-)
 create mode 100644 Sources/XXClient/CMix/Functions/CMixTrackServicesWithIdentity.swift

diff --git a/Sources/XXClient/CMix/CMix.swift b/Sources/XXClient/CMix/CMix.swift
index 166e0eb0..9ec8007e 100644
--- a/Sources/XXClient/CMix/CMix.swift
+++ b/Sources/XXClient/CMix/CMix.swift
@@ -20,6 +20,7 @@ public struct CMix {
   public var waitForRoundResult: CMixWaitForRoundResult
   public var connect: CMixConnect
   public var trackServices: CMixTrackServices
+  public var trackServicesWithIdentity: CMixTrackServicesWithIdentity
 }
 
 extension CMix {
@@ -43,7 +44,8 @@ extension CMix {
       addHealthCallback: .live(bindingsCMix),
       waitForRoundResult: .live(bindingsCMix),
       connect: .live(bindingsCMix),
-      trackServices: .live(bindingsCMix)
+      trackServices: .live(bindingsCMix),
+      trackServicesWithIdentity: .live(bindingsCMix)
     )
   }
 }
@@ -68,6 +70,7 @@ extension CMix {
     addHealthCallback: .unimplemented,
     waitForRoundResult: .unimplemented,
     connect: .unimplemented,
-    trackServices: .unimplemented
+    trackServices: .unimplemented,
+    trackServicesWithIdentity: .unimplemented
   )
 }
diff --git a/Sources/XXClient/CMix/Functions/CMixTrackServicesWithIdentity.swift b/Sources/XXClient/CMix/Functions/CMixTrackServicesWithIdentity.swift
new file mode 100644
index 00000000..088565c0
--- /dev/null
+++ b/Sources/XXClient/CMix/Functions/CMixTrackServicesWithIdentity.swift
@@ -0,0 +1,30 @@
+import Bindings
+import XCTestDynamicOverlay
+
+public struct CMixTrackServicesWithIdentity {
+  public var run: (Int, TrackServicesCallback) throws -> Void
+
+  public func callAsFunction(
+    _ identity: Int,
+    callback: TrackServicesCallback
+  ) throws -> Void {
+    try run(identity, callback)
+  }
+}
+
+extension CMixTrackServicesWithIdentity {
+  public static func live(_ bindingsCMix: BindingsCmix) -> CMixTrackServicesWithIdentity {
+    CMixTrackServicesWithIdentity { identity, callback in
+      try bindingsCMix.trackServices(
+        withIdentity: identity,
+        cb: callback.makeBindingsHealthCallback()
+      )
+    }
+  }
+}
+
+extension CMixTrackServicesWithIdentity {
+  public static let unimplemented = CMixTrackServicesWithIdentity(
+    run: XCTUnimplemented("\(Self.self)")
+  )
+}
-- 
GitLab