diff --git a/Sources/ElixxirDAppsSDK/E2E/E2E.swift b/Sources/ElixxirDAppsSDK/E2E/E2E.swift index e127fdace0d45e8dd1ccf2a61046b37f0af4bd9b..710de98e414642b0638105e5520be63303ba3a36 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 0000000000000000000000000000000000000000..5163c559939214177f175d89449c055dd376a4a0 --- /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)") + ) +}