0001    //
0002    //  Multicast.swift
0003    //  Rx
0004    //
0005    //  Created by Krunoslav Zaher on 2/27/15.
0006    //  Copyright © 2015 Krunoslav Zaher. All rights reserved.
0007    //
0008    
0009    import Foundation
0010    
0011    class MulticastSink
Multicast.swift:67
        let sink = MulticastSink(parent: self, observer: observer)
<S
Multicast.swift:14
    typealias MutlicastType = Multicast<S, O.E>
: SubjectType, O
Multicast.swift:11
class MulticastSink<S: SubjectType, O: ObserverType>: Sink<O>, ObserverType {
Multicast.swift:12
    typealias Element = O.E
Multicast.swift:14
    typealias MutlicastType = Multicast<S, O.E>
Multicast.swift:18
    init(parent: MutlicastType, observer: O) {
: ObserverType>: Sink<O>, ObserverType { 0012 typealias Element
Multicast.swift:13
    typealias ResultType = Element
= O.E 0013 typealias ResultType
Multicast.swift:42
    func on(event: Event<ResultType>) {
= Element 0014 typealias MutlicastType
Multicast.swift:16
    private let _parent: MutlicastType
Multicast.swift:18
    init(parent: MutlicastType, observer: O) {
= Multicast<S, O.E> 0015 0016 private let _parent
Multicast.swift:19
        _parent = parent
Multicast.swift:25
            let subject = try _parent._subjectSelector()
Multicast.swift:26
            let connectable = ConnectableObservableAdapter(source: _parent._source, subject: subject)
Multicast.swift:28
            let observable = try _parent._selector(connectable)
: MutlicastType 0017 0018 init
Multicast.swift:67
        let sink = MulticastSink(parent: self, observer: observer)
(parent: MutlicastType, observer: O) { 0019 _parent = parent 0020 super.init(observer: observer) 0021 } 0022 0023 func run
Multicast.swift:68
        sink.disposable = sink.run()
() -> Disposable { 0024 do { 0025 let subject = try _parent._subjectSelector() 0026 let connectable = ConnectableObservableAdapter(source: _parent._source, subject: subject) 0027 0028 let observable = try _parent._selector(connectable) 0029 0030 let subscription = observable.subscribe(self) 0031 let connection = connectable.connect() 0032 0033 return BinaryDisposable(subscription, connection) 0034 } 0035 catch let e { 0036 forwardOn(.Error(e)) 0037 dispose() 0038 return NopDisposable.instance 0039 } 0040 } 0041 0042 func on(event: Event<ResultType>) { 0043 forwardOn(event) 0044 switch event { 0045 case .Next: break 0046 case .Error, .Completed: 0047 dispose() 0048 } 0049 } 0050 } 0051 0052 class Multicast
Multicast.swift:14
    typealias MutlicastType = Multicast<S, O.E>
Observable+Binding.swift:49
        return Multicast(
<S
Multicast.swift:53
    typealias SubjectSelectorType = () throws -> S
Multicast.swift:54
    typealias SelectorType = (Observable<S.E>) throws -> Observable<R>
Multicast.swift:56
    private let _source: Observable<S.SubjectObserverType.E>
Multicast.swift:60
    init(source: Observable<S.SubjectObserverType.E>, subjectSelector: SubjectSelectorType, selector: SelectorType) {
: SubjectType, R
Multicast.swift:52
class Multicast<S: SubjectType, R>: Producer<R> {
Multicast.swift:54
    typealias SelectorType = (Observable<S.E>) throws -> Observable<R>
Multicast.swift:66
    override func run<O: ObserverType where O.E == R>(observer: O) -> Disposable {
>: Producer<R> { 0053 typealias SubjectSelectorType
Multicast.swift:57
    private let _subjectSelector: SubjectSelectorType
Multicast.swift:60
    init(source: Observable<S.SubjectObserverType.E>, subjectSelector: SubjectSelectorType, selector: SelectorType) {
= () throws -> S 0054 typealias SelectorType
Multicast.swift:58
    private let _selector: SelectorType
Multicast.swift:60
    init(source: Observable<S.SubjectObserverType.E>, subjectSelector: SubjectSelectorType, selector: SelectorType) {
= (Observable<S.E>) throws -> Observable<R> 0055 0056 private let _source
Multicast.swift:26
            let connectable = ConnectableObservableAdapter(source: _parent._source, subject: subject)
Multicast.swift:61
        _source = source
: Observable<S.SubjectObserverType.E> 0057 private let _subjectSelector
Multicast.swift:25
            let subject = try _parent._subjectSelector()
Multicast.swift:62
        _subjectSelector = subjectSelector
: SubjectSelectorType 0058 private let _selector
Multicast.swift:28
            let observable = try _parent._selector(connectable)
Multicast.swift:63
        _selector = selector
: SelectorType 0059 0060 init
Observable+Binding.swift:49
        return Multicast(
(source: Observable<S.SubjectObserverType.E>, subjectSelector: SubjectSelectorType, selector: SelectorType) { 0061 _source = source 0062 _subjectSelector = subjectSelector 0063 _selector = selector 0064 } 0065 0066 override func run<O: ObserverType where O.E == R>(observer: O) -> Disposable { 0067 let sink = MulticastSink(parent: self, observer: observer) 0068 sink.disposable = sink.run() 0069 return sink 0070 } 0071 }