diff --git a/Sources/ElixxirDAppsSDK/Channel/Channel.swift b/Sources/ElixxirDAppsSDK/Channel/Channel.swift new file mode 100644 index 0000000000000000000000000000000000000000..532a04edc33bc471bac5a7697aa021b2f6725eb1 --- /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 0000000000000000000000000000000000000000..ee9a3adf8b5f4cf6e745a9f103715663165279bd --- /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 0000000000000000000000000000000000000000..9d92e00297cc99ce2b0b195180994cb0aa8666d0 --- /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 0000000000000000000000000000000000000000..7c27a3dca1b537f9a6bc0ef322d89b65c46ad412 --- /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 0000000000000000000000000000000000000000..65fc1089f9076c57ab2fae004ce0fdab79cd80d8 --- /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 0000000000000000000000000000000000000000..6b315b0f695f241d56b044822764b1266f5fd90d --- /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 0000000000000000000000000000000000000000..b6ef89f873eb4d7667487e2242151b3f3cdf1b21 --- /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 0000000000000000000000000000000000000000..faddcb18be457355ec685e30fb3cb5ac937c1bed --- /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)") + ) +}