Relay
A Relay
is a Combine.Subject
without the interface for sending completion
signal.
Why
A Subject
, like a Publisher
, is stateful. Once the complete signal is sent,
subscriber will stop receiving values. In practice, this is rarely desired.
Anyone with a reference to a subject can terminate the data stream for all
subscribers. In large projects this is a source of bugs.
Relay
s take away the mutability of the "completion" state, making it safer to
share.
Install
Xcode:
Add package https://github.com/dduan/Relay.git
.
Swift Package Manager
.package(url: "http://github.com/dduan/Relay", from: "0.1.2")
CocoaPods:
use_frameworks!
pod "CombineRelay"
Carthage
github "dduan/Relay"
Usage
Relay provides some types that each corresponds to a type in Combine:
Relay | Combine |
---|---|
Relay | Subject |
PassthroughRelay | PassthroughSubject |
CurrentValueRelay | CurrentValueSubject |
AnyRelay | AnySubject |
Each type has identical interface and behavior to its Combine counterpart. Except it's impossible to send a complete signal.
License
MIT. See LICENSE.md