0001 // 0002 // SingleAsync.swift 0003 // Rx 0004 // 0005 // Created by Junior B. on 09/11/15. 0006 // Copyright © 2015 Krunoslav Zaher. All rights reserved. 0007 // 0008 0009 import Foundation 0010 0011 class SingleAsyncSink<ElementType
SingleAsync.swift:72 let sink = SingleAsyncSink(parent: self, observer: observer), O
SingleAsync.swift:12 typealias Parent = SingleAsync<ElementType>SingleAsync.swift:13 typealias E = ElementType: ObserverType where O.E == ElementType> : Sink<O>, ObserverType { 0012 typealias Parent
SingleAsync.swift:11 class SingleAsyncSink<ElementType, O: ObserverType where O.E == ElementType> : Sink<O>, ObserverType {SingleAsync.swift:18 init(parent: Parent, observer: O) {= SingleAsync<ElementType> 0013 typealias E
SingleAsync.swift:15 private let _parent: ParentSingleAsync.swift:18 init(parent: Parent, observer: O) {= ElementType 0014 0015 private let _parent
SingleAsync.swift:23 func on(event: Event<E>) {: Parent 0016 private var _seenValue
SingleAsync.swift:19 _parent = parentSingleAsync.swift:27 let forward = try _parent._predicate?(value) ?? true: Bool = false 0017 0018 init
SingleAsync.swift:38 if _seenValue == false {SingleAsync.swift:40 _seenValue = trueSingleAsync.swift:50 if (!_seenValue) {(parent: Parent, observer: O) { 0019 _parent = parent 0020 super.init(observer: observer) 0021 } 0022 0023 func on(event: Event<E>) { 0024 switch event { 0025 case .Next(let value): 0026 do { 0027 let forward = try _parent._predicate?(value) ?? true 0028 if !forward { 0029 return 0030 } 0031 } 0032 catch let error { 0033 forwardOn(.Error(error as ErrorType)) 0034 dispose() 0035 return 0036 } 0037 0038 if _seenValue == false { 0039 forwardOn(.Next(value)) 0040 _seenValue = true 0041 } else { 0042 forwardOn(.Error(RxError.MoreThanOneElement)) 0043 dispose() 0044 } 0045 0046 case .Error: 0047 forwardOn(event) 0048 dispose() 0049 case .Completed: 0050 if (!_seenValue) { 0051 forwardOn(.Error(RxError.NoElements)) 0052 } else { 0053 forwardOn(.Completed) 0054 } 0055 dispose() 0056 } 0057 } 0058 } 0059 0060 class SingleAsync
SingleAsync.swift:72 let sink = SingleAsyncSink(parent: self, observer: observer)<Element
Observable+StandardSequenceOperators.swift:305 return SingleAsync(source: asObservable())Observable+StandardSequenceOperators.swift:320 return SingleAsync(source: asObservable(), predicate: predicate)SingleAsync.swift:12 typealias Parent = SingleAsync<ElementType>>: Producer<Element> { 0061 typealias Predicate
SingleAsync.swift:60 class SingleAsync<Element>: Producer<Element> {SingleAsync.swift:61 typealias Predicate = (Element) throws -> BoolSingleAsync.swift:63 private let _source: Observable<Element>SingleAsync.swift:66 init(source: Observable<Element>, predicate: Predicate? = nil) {SingleAsync.swift:71 override func run<O : ObserverType where O.E == Element>(observer: O) -> Disposable {= (Element) throws -> Bool 0062 0063 private let _source
SingleAsync.swift:64 private let _predicate: Predicate?SingleAsync.swift:66 init(source: Observable<Element>, predicate: Predicate? = nil) {: Observable<Element> 0064 private let _predicate
SingleAsync.swift:67 _source = sourceSingleAsync.swift:73 sink.disposable = _source.subscribe(sink): Predicate? 0065 0066 init
SingleAsync.swift:27 let forward = try _parent._predicate?(value) ?? trueSingleAsync.swift:68 _predicate = predicate(source: Observable<Element>, predicate: Predicate? = nil) { 0067 _source = source 0068 _predicate = predicate 0069 } 0070 0071 override func run<O : ObserverType where O.E == Element>(observer: O) -> Disposable { 0072 let sink = SingleAsyncSink(parent: self, observer: observer) 0073 sink.disposable = _source.subscribe(sink) 0074 return sink 0075 } 0076 }
Observable+StandardSequenceOperators.swift:305 return SingleAsync(source: asObservable())Observable+StandardSequenceOperators.swift:320 return SingleAsync(source: asObservable(), predicate: predicate)