0001    //
0002    //  Deferred.swift
0003    //  RxSwift
0004    //
0005    //  Created by Krunoslav Zaher on 4/19/15.
0006    //  Copyright © 2015 Krunoslav Zaher. All rights reserved.
0007    //
0008    
0009    import Foundation
0010    
0011    class DeferredSink
Deferred.swift:57
        let sink = DeferredSink(observableFactory: _observableFactory, observer: observer)
<S
Deferred.swift:14
    private let _observableFactory: () throws -> S
Deferred.swift:16
    init(observableFactory: () throws -> S, observer: O) {
: ObservableType, O
Deferred.swift:11
class DeferredSink<S: ObservableType, O: ObserverType where S.E == O.E> : Sink<O>, ObserverType {
Deferred.swift:12
    typealias E = O.E
Deferred.swift:16
    init(observableFactory: () throws -> S, observer: O) {
: ObserverType where S.E == O.E> : Sink<O>, ObserverType { 0012 typealias E
Deferred.swift:33
    func on(event: Event<E>) {
= O.E 0013 0014 private let _observableFactory
Deferred.swift:17
        _observableFactory = observableFactory
Deferred.swift:23
            let result = try _observableFactory()
: () throws -> S 0015 0016 init
Deferred.swift:57
        let sink = DeferredSink(observableFactory: _observableFactory, observer: observer)
(observableFactory: () throws -> S, observer: O) { 0017 _observableFactory = observableFactory 0018 super.init(observer: observer) 0019 } 0020 0021 func run
Deferred.swift:58
        sink.disposable = sink.run()
() -> Disposable { 0022 do { 0023 let result = try _observableFactory() 0024 return result.subscribe(self) 0025 } 0026 catch let e { 0027 forwardOn(.Error(e)) 0028 dispose() 0029 return NopDisposable.instance 0030 } 0031 } 0032 0033 func on(event: Event<E>) { 0034 forwardOn(event) 0035 0036 switch event { 0037 case .Next: 0038 break 0039 case .Error: 0040 dispose() 0041 case .Completed: 0042 dispose() 0043 } 0044 } 0045 } 0046 0047 class Deferred
Observable+Creation.swift:127
        return Deferred(observableFactory: observableFactory)
<S
Deferred.swift:47
class Deferred<S: ObservableType> : Producer<S.E> {
Deferred.swift:48
    typealias Factory = () throws -> S
Deferred.swift:56
    override func run<O: ObserverType where O.E == S.E>(observer: O) -> Disposable {
: ObservableType> : Producer<S.E> { 0048 typealias Factory
Deferred.swift:50
    private let _observableFactory : Factory
Deferred.swift:52
    init(observableFactory: Factory) {
= () throws -> S 0049 0050 private let _observableFactory
Deferred.swift:53
        _observableFactory = observableFactory
Deferred.swift:57
        let sink = DeferredSink(observableFactory: _observableFactory, observer: observer)
: Factory 0051 0052 init
Observable+Creation.swift:127
        return Deferred(observableFactory: observableFactory)
(observableFactory: Factory) { 0053 _observableFactory = observableFactory 0054 } 0055 0056 override func run<O: ObserverType where O.E == S.E>(observer: O) -> Disposable { 0057 let sink = DeferredSink(observableFactory: _observableFactory, observer: observer) 0058 sink.disposable = sink.run() 0059 return sink 0060 } 0061 }