Skip to content
Snippets Groups Projects
Commit 92febf27 authored by Dariusz Rybicki's avatar Dariusz Rybicki
Browse files

Add ConnectionPartnerProvider

parent 4cc1c04a
No related branches found
No related tags found
1 merge request!2Bindings API wrapper
......@@ -2,7 +2,7 @@ import Bindings
public struct Connection {
public var isAuthenticated: () -> Bool
public var getPartner: () -> Data
public var getPartner: ConnectionPartnerProvider
public var send: MessageSender
public var listen: MessageListener
public var close: ConnectionCloser
......@@ -14,12 +14,7 @@ extension Connection {
) -> Connection {
Connection(
isAuthenticated: { false },
getPartner: {
guard let data = bindingsConnection.getPartner() else {
fatalError("BindingsConnection.getPartner returned `nil`")
}
return data
},
getPartner: .live(bindingsConnection: bindingsConnection),
send: .live(bindingsConnection: bindingsConnection),
listen: .live(bindingsConnection: bindingsConnection),
close: .live(bindingsConnection: bindingsConnection)
......@@ -31,12 +26,7 @@ extension Connection {
) -> Connection {
Connection(
isAuthenticated: bindingsAuthenticatedConnection.isAuthenticated,
getPartner: {
guard let data = bindingsAuthenticatedConnection.getPartner() else {
fatalError("BindingsAuthenticatedConnection.getPartner returned `nil`")
}
return data
},
getPartner: .live(bindingsAuthenticatedConnection: bindingsAuthenticatedConnection),
send: .live(bindingsAuthenticatedConnection: bindingsAuthenticatedConnection),
listen: .live(bindingsAuthenticatedConnection: bindingsAuthenticatedConnection),
close: .live(bindingsAuthenticatedConnection: bindingsAuthenticatedConnection)
......@@ -48,7 +38,7 @@ extension Connection {
extension Connection {
public static let failing = Connection(
isAuthenticated: { fatalError("Not implemented") },
getPartner: { fatalError("Not implemented") },
getPartner: .failing,
send: .failing,
listen: .failing,
close: .failing
......
import Bindings
public struct ConnectionPartnerProvider {
public var get: () -> Data
public func callAsFunction() -> Data {
get()
}
}
extension ConnectionPartnerProvider {
public static func live(
bindingsConnection: BindingsConnection
) -> ConnectionPartnerProvider {
ConnectionPartnerProvider {
guard let data = bindingsConnection.getPartner() else {
fatalError("BindingsConnection.getPartner returned `nil`")
}
return data
}
}
public static func live(
bindingsAuthenticatedConnection: BindingsAuthenticatedConnection
) -> ConnectionPartnerProvider {
ConnectionPartnerProvider {
guard let data = bindingsAuthenticatedConnection.getPartner() else {
fatalError("BindingsAuthenticatedConnection.getPartner returned `nil`")
}
return data
}
}
}
#if DEBUG
extension ConnectionPartnerProvider {
public static let failing = ConnectionPartnerProvider {
fatalError("Not implemented")
}
}
#endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment