From 003644bc9b4c0af4b14b8907a3540efcac1002fa Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Mon, 25 Jul 2022 15:35:21 +0100
Subject: [PATCH] Add E2EPartitionSize functor

---
 Sources/ElixxirDAppsSDK/E2E.swift             |  7 +++--
 .../ElixxirDAppsSDK/E2EPartitionSize.swift    | 30 +++++++++++++++++++
 2 files changed, 35 insertions(+), 2 deletions(-)
 create mode 100644 Sources/ElixxirDAppsSDK/E2EPartitionSize.swift

diff --git a/Sources/ElixxirDAppsSDK/E2E.swift b/Sources/ElixxirDAppsSDK/E2E.swift
index 1a0617ae..d98b72c0 100644
--- a/Sources/ElixxirDAppsSDK/E2E.swift
+++ b/Sources/ElixxirDAppsSDK/E2E.swift
@@ -4,6 +4,7 @@ public struct E2E {
   public var getId: E2EGetId
   public var getReceptionId: E2EGetReceptionId
   public var payloadSize: E2EPayloadSize
+  public var partitionSize: E2EPartitionSize
 
   // TODO:
 }
@@ -13,7 +14,8 @@ extension E2E {
     E2E(
       getId: .live(bindingsE2E: bindingsE2E),
       getReceptionId: .live(bindingsE2E: bindingsE2E),
-      payloadSize: .live(bindingsE2E: bindingsE2E)
+      payloadSize: .live(bindingsE2E: bindingsE2E),
+      partitionSize: .live(bindingsE2E: bindingsE2E)
     )
   }
 }
@@ -22,6 +24,7 @@ extension E2E {
   public static let unimplemented = E2E(
     getId: .unimplemented,
     getReceptionId: .unimplemented,
-    payloadSize: .unimplemented
+    payloadSize: .unimplemented,
+    partitionSize: .unimplemented
   )
 }
diff --git a/Sources/ElixxirDAppsSDK/E2EPartitionSize.swift b/Sources/ElixxirDAppsSDK/E2EPartitionSize.swift
new file mode 100644
index 00000000..a3d8d722
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/E2EPartitionSize.swift
@@ -0,0 +1,30 @@
+import Bindings
+import XCTestDynamicOverlay
+
+public struct E2EPartitionSize {
+  public var first: () -> Int
+  public var second: () -> Int
+  public var atIndex: (Int) -> Int
+
+  subscript(payloadIndex payloadIndex: Int) -> Int {
+    atIndex(payloadIndex)
+  }
+}
+
+extension E2EPartitionSize {
+  public static func live(bindingsE2E: BindingsE2e) -> E2EPartitionSize {
+    E2EPartitionSize(
+      first: bindingsE2E.firstPartitionSize,
+      second: bindingsE2E.secondPartitionSize,
+      atIndex: bindingsE2E.partitionSize(_:)
+    )
+  }
+}
+
+extension E2EPartitionSize {
+  public static let unimplemented = E2EPartitionSize(
+    first: XCTUnimplemented("\(Self.self).first"),
+    second: XCTUnimplemented("\(Self.self).second"),
+    atIndex: XCTUnimplemented("\(Self.self).atIndex")
+  )
+}
-- 
GitLab