-
Dariusz Rybicki authoredDariusz Rybicki authored
MessageSender.swift 996 B
import Bindings
public struct MessageSender {
public var send: (Int, Data) throws -> Data
public func callAsFunction(
messageType: Int,
payload: Data
) throws -> Data {
try send(messageType, payload)
}
}
extension MessageSender {
public static func live(
bindingsConnection: BindingsConnection
) -> MessageSender {
MessageSender.live(sendE2E: bindingsConnection.sendE2E(_:payload:))
}
public static func live(
bindingsAuthenticatedConnection: BindingsAuthenticatedConnection
) -> MessageSender {
MessageSender.live(sendE2E: bindingsAuthenticatedConnection.sendE2E(_:payload:))
}
private static func live(
sendE2E: @escaping (Int, Data) throws -> Data
) -> MessageSender {
MessageSender { messageType, payload in
try sendE2E(messageType, payload)
}
}
}
#if DEBUG
extension MessageSender {
public static let failing = MessageSender { _, _ in
struct NotImplemented: Error {}
throw NotImplemented()
}
}
#endif