From 265dd4037ed0498afaad40d8a0f31e7c911f3ec7 Mon Sep 17 00:00:00 2001 From: Dariusz Rybicki <dariusz@elixxir.io> Date: Fri, 29 Jul 2022 15:10:52 +0100 Subject: [PATCH] Wrap Channel object --- Sources/ElixxirDAppsSDK/Channel/Channel.swift | 37 +++++++++++++++++++ .../Channel/Functors/ChannelBroadcast.swift | 22 +++++++++++ .../Functors/ChannelBroadcastAsymmetric.swift | 25 +++++++++++++ .../Channel/Functors/ChannelGet.swift | 24 ++++++++++++ .../Channel/Functors/ChannelListen.swift | 30 +++++++++++++++ .../ChannelMaxAsymmetricPayloadSize.swift | 22 +++++++++++ .../Functors/ChannelMaxPayloadSize.swift | 22 +++++++++++ .../Channel/Functors/ChannelStop.swift | 22 +++++++++++ 8 files changed, 204 insertions(+) create mode 100644 Sources/ElixxirDAppsSDK/Channel/Channel.swift create mode 100644 Sources/ElixxirDAppsSDK/Channel/Functors/ChannelBroadcast.swift create mode 100644 Sources/ElixxirDAppsSDK/Channel/Functors/ChannelBroadcastAsymmetric.swift create mode 100644 Sources/ElixxirDAppsSDK/Channel/Functors/ChannelGet.swift create mode 100644 Sources/ElixxirDAppsSDK/Channel/Functors/ChannelListen.swift create mode 100644 Sources/ElixxirDAppsSDK/Channel/Functors/ChannelMaxAsymmetricPayloadSize.swift create mode 100644 Sources/ElixxirDAppsSDK/Channel/Functors/ChannelMaxPayloadSize.swift create mode 100644 Sources/ElixxirDAppsSDK/Channel/Functors/ChannelStop.swift diff --git a/Sources/ElixxirDAppsSDK/Channel/Channel.swift b/Sources/ElixxirDAppsSDK/Channel/Channel.swift new file mode 100644 index 00000000..532a04ed --- /dev/null +++ b/Sources/ElixxirDAppsSDK/Channel/Channel.swift @@ -0,0 +1,37 @@ +import Bindings + +public struct Channel { + public var broadcast: ChannelBroadcast + public var broadcastAsymmetric: ChannelBroadcastAsymmetric + public var get: ChannelGet + public var listen: ChannelListen + public var maxAsymmetricPayloadSize: ChannelMaxAsymmetricPayloadSize + public var maxPayloadSize: ChannelMaxPayloadSize + public var stop: ChannelStop +} + +extension Channel { + public static func live(_ bindingsChannel: BindingsChannel) -> Channel { + Channel( + broadcast: .live(bindingsChannel), + broadcastAsymmetric: .live(bindingsChannel), + get: .live(bindingsChannel), + listen: .live(bindingsChannel), + maxAsymmetricPayloadSize: .live(bindingsChannel), + maxPayloadSize: .live(bindingsChannel), + stop: .live(bindingsChannel) + ) + } +} + +extension Channel { + public static let unimplemented = Channel( + broadcast: .unimplemented, + broadcastAsymmetric: .unimplemented, + get: .unimplemented, + listen: .unimplemented, + maxAsymmetricPayloadSize: .unimplemented, + maxPayloadSize: .unimplemented, + stop: .unimplemented + ) +} diff --git a/Sources/ElixxirDAppsSDK/Channel/Functors/ChannelBroadcast.swift b/Sources/ElixxirDAppsSDK/Channel/Functors/ChannelBroadcast.swift new file mode 100644 index 00000000..ee9a3adf --- /dev/null +++ b/Sources/ElixxirDAppsSDK/Channel/Functors/ChannelBroadcast.swift @@ -0,0 +1,22 @@ +import Bindings +import XCTestDynamicOverlay + +public struct ChannelBroadcast { + public var run: (Data) throws -> Data + + public func callAsFunction(_ payload: Data) throws -> Data { + try run(payload) + } +} + +extension ChannelBroadcast { + public static func live(_ bindingsChannel: BindingsChannel) -> ChannelBroadcast { + ChannelBroadcast(run: bindingsChannel.broadcast) + } +} + +extension ChannelBroadcast { + public static let unimplemented = ChannelBroadcast( + run: XCTUnimplemented("\(Self.self)") + ) +} diff --git a/Sources/ElixxirDAppsSDK/Channel/Functors/ChannelBroadcastAsymmetric.swift b/Sources/ElixxirDAppsSDK/Channel/Functors/ChannelBroadcastAsymmetric.swift new file mode 100644 index 00000000..9d92e002 --- /dev/null +++ b/Sources/ElixxirDAppsSDK/Channel/Functors/ChannelBroadcastAsymmetric.swift @@ -0,0 +1,25 @@ +import Bindings +import XCTestDynamicOverlay + +public struct ChannelBroadcastAsymmetric { + public var run: (Data, Data) throws -> Data + + public func callAsFunction( + payload: Data, + privateKey: Data + ) throws -> Data { + try run(payload, privateKey) + } +} + +extension ChannelBroadcastAsymmetric { + public static func live(_ bindingsChannel: BindingsChannel) -> ChannelBroadcastAsymmetric { + ChannelBroadcastAsymmetric(run: bindingsChannel.broadcastAsymmetric(_:pk:)) + } +} + +extension ChannelBroadcastAsymmetric { + public static let unimplemented = ChannelBroadcastAsymmetric( + run: XCTUnimplemented("\(Self.self)") + ) +} diff --git a/Sources/ElixxirDAppsSDK/Channel/Functors/ChannelGet.swift b/Sources/ElixxirDAppsSDK/Channel/Functors/ChannelGet.swift new file mode 100644 index 00000000..7c27a3dc --- /dev/null +++ b/Sources/ElixxirDAppsSDK/Channel/Functors/ChannelGet.swift @@ -0,0 +1,24 @@ +import Bindings +import XCTestDynamicOverlay + +public struct ChannelGet { + public var run: () throws -> ChannelDef + + public func callAsFunction() throws -> ChannelDef { + try run() + } +} + +extension ChannelGet { + public static func live(_ bindingsChannel: BindingsChannel) -> ChannelGet { + ChannelGet { + try ChannelDef.decode(bindingsChannel.get()) + } + } +} + +extension ChannelGet { + public static let unimplemented = ChannelGet( + run: XCTUnimplemented("\(Self.self)") + ) +} diff --git a/Sources/ElixxirDAppsSDK/Channel/Functors/ChannelListen.swift b/Sources/ElixxirDAppsSDK/Channel/Functors/ChannelListen.swift new file mode 100644 index 00000000..65fc1089 --- /dev/null +++ b/Sources/ElixxirDAppsSDK/Channel/Functors/ChannelListen.swift @@ -0,0 +1,30 @@ +import Bindings +import XCTestDynamicOverlay + +public struct ChannelListen { + public var run: (Int, BroadcastListener) throws -> Void + + public func callAsFunction( + method: Int, + callback: BroadcastListener + ) throws { + try run(method, callback) + } +} + +extension ChannelListen { + public static func live(_ bindingsChannel: BindingsChannel) -> ChannelListen { + ChannelListen { method, callback in + try bindingsChannel.listen( + callback.makeBindingsBroadcastListener(), + method: method + ) + } + } +} + +extension ChannelListen { + public static let unimplemented = ChannelListen( + run: XCTUnimplemented("\(Self.self)") + ) +} diff --git a/Sources/ElixxirDAppsSDK/Channel/Functors/ChannelMaxAsymmetricPayloadSize.swift b/Sources/ElixxirDAppsSDK/Channel/Functors/ChannelMaxAsymmetricPayloadSize.swift new file mode 100644 index 00000000..6b315b0f --- /dev/null +++ b/Sources/ElixxirDAppsSDK/Channel/Functors/ChannelMaxAsymmetricPayloadSize.swift @@ -0,0 +1,22 @@ +import Bindings +import XCTestDynamicOverlay + +public struct ChannelMaxAsymmetricPayloadSize { + public var run: () -> Int + + public func callAsFunction() -> Int { + run() + } +} + +extension ChannelMaxAsymmetricPayloadSize { + public static func live(_ bindingsChannel: BindingsChannel) -> ChannelMaxAsymmetricPayloadSize { + ChannelMaxAsymmetricPayloadSize(run: bindingsChannel.maxAsymmetricPayloadSize) + } +} + +extension ChannelMaxAsymmetricPayloadSize { + public static let unimplemented = ChannelMaxAsymmetricPayloadSize( + run: XCTUnimplemented("\(Self.self)") + ) +} diff --git a/Sources/ElixxirDAppsSDK/Channel/Functors/ChannelMaxPayloadSize.swift b/Sources/ElixxirDAppsSDK/Channel/Functors/ChannelMaxPayloadSize.swift new file mode 100644 index 00000000..b6ef89f8 --- /dev/null +++ b/Sources/ElixxirDAppsSDK/Channel/Functors/ChannelMaxPayloadSize.swift @@ -0,0 +1,22 @@ +import Bindings +import XCTestDynamicOverlay + +public struct ChannelMaxPayloadSize { + public var run: () -> Int + + public func callAsFunction() -> Int { + run() + } +} + +extension ChannelMaxPayloadSize { + public static func live(_ bindingsChannel: BindingsChannel) -> ChannelMaxPayloadSize { + ChannelMaxPayloadSize(run: bindingsChannel.maxPayloadSize) + } +} + +extension ChannelMaxPayloadSize { + public static let unimplemented = ChannelMaxPayloadSize( + run: XCTUnimplemented("\(Self.self)") + ) +} diff --git a/Sources/ElixxirDAppsSDK/Channel/Functors/ChannelStop.swift b/Sources/ElixxirDAppsSDK/Channel/Functors/ChannelStop.swift new file mode 100644 index 00000000..faddcb18 --- /dev/null +++ b/Sources/ElixxirDAppsSDK/Channel/Functors/ChannelStop.swift @@ -0,0 +1,22 @@ +import Bindings +import XCTestDynamicOverlay + +public struct ChannelStop { + public var run: () -> Void + + public func callAsFunction() { + run() + } +} + +extension ChannelStop { + public static func live(_ bindingsChannel: BindingsChannel) -> ChannelStop { + ChannelStop(run: bindingsChannel.stop) + } +} + +extension ChannelStop { + public static let unimplemented = ChannelStop( + run: XCTUnimplemented("\(Self.self)") + ) +} -- GitLab