From 9bddbf380405287aaedeb38001d471478f6e8abd Mon Sep 17 00:00:00 2001 From: Dariusz Rybicki <dariusz@elixxir.io> Date: Wed, 3 Aug 2022 21:24:15 +0100 Subject: [PATCH] Add E2ERegisterListener functor --- Sources/ElixxirDAppsSDK/E2E/E2E.swift | 7 ++-- .../E2E/Functors/E2ERegisterListener.swift | 32 +++++++++++++++++++ 2 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 Sources/ElixxirDAppsSDK/E2E/Functors/E2ERegisterListener.swift diff --git a/Sources/ElixxirDAppsSDK/E2E/E2E.swift b/Sources/ElixxirDAppsSDK/E2E/E2E.swift index e127fdac..710de98e 100644 --- a/Sources/ElixxirDAppsSDK/E2E/E2E.swift +++ b/Sources/ElixxirDAppsSDK/E2E/E2E.swift @@ -22,6 +22,7 @@ public struct E2E { public var confirmReceivedRequest: E2EConfirmReceivedRequest public var replayConfirmReceivedRequest: E2EReplayConfirmReceivedRequest public var send: E2ESend + public var registerListener: E2ERegisterListener } extension E2E { @@ -47,7 +48,8 @@ extension E2E { verifyOwnership: .live(bindingsE2E), confirmReceivedRequest: .live(bindingsE2E), replayConfirmReceivedRequest: .live(bindingsE2E), - send: .live(bindingsE2E) + send: .live(bindingsE2E), + registerListener: .live(bindingsE2E) ) } } @@ -74,6 +76,7 @@ extension E2E { verifyOwnership: .unimplemented, confirmReceivedRequest: .unimplemented, replayConfirmReceivedRequest: .unimplemented, - send: .unimplemented + send: .unimplemented, + registerListener: .unimplemented ) } diff --git a/Sources/ElixxirDAppsSDK/E2E/Functors/E2ERegisterListener.swift b/Sources/ElixxirDAppsSDK/E2E/Functors/E2ERegisterListener.swift new file mode 100644 index 00000000..5163c559 --- /dev/null +++ b/Sources/ElixxirDAppsSDK/E2E/Functors/E2ERegisterListener.swift @@ -0,0 +1,32 @@ +import Bindings +import XCTestDynamicOverlay + +public struct E2ERegisterListener { + public var run: (Data, Int, Listener) throws -> Void + + public func callAsFunction( + senderId: Data, + messageType: Int, + callback: Listener + ) throws { + try run(senderId, messageType, callback) + } +} + +extension E2ERegisterListener { + public static func live(_ bindingsE2E: BindingsE2e) -> E2ERegisterListener { + E2ERegisterListener { senderId, messageType, callback in + try bindingsE2E.registerListener( + senderId, + messageType: messageType, + newListener: callback.makeBindingsListener() + ) + } + } +} + +extension E2ERegisterListener { + public static let unimplemented = E2ERegisterListener( + run: XCTUnimplemented("\(Self.self)") + ) +} -- GitLab