0001 // 0002 // SerialDisposable.swift 0003 // Rx 0004 // 0005 // Created by Krunoslav Zaher on 3/12/15. 0006 // Copyright © 2015 Krunoslav Zaher. All rights reserved. 0007 // 0008 0009 import Foundation 0010 0011 /** 0012 Represents a disposable resource whose underlying disposable resource can be replaced by another disposable resource, causing automatic disposal of the previous underlying disposable resource. 0013 */ 0014 public class SerialDisposable: DisposeBase, Cancelable { 0015 private var _lock
Buffer.swift:45 private let _timerD = SerialDisposable()Catch.swift:40 private let _subscription = SerialDisposable()ObserveOn.swift:56 let _scheduleDisposable = SerialDisposable()SubscribeOn.swift:31 let disposeEverything = SerialDisposable()Switch.swift:19 private let _innerSubscription: SerialDisposable = SerialDisposable()Switch.swift:19 private let _innerSubscription: SerialDisposable = SerialDisposable()TailRecursiveSink.swift:30 var _subscription = SerialDisposable()Throttle.swift:27 let cancellable = SerialDisposable()Timeout.swift:19 private let _timerD = SerialDisposable()Timeout.swift:20 private let _subscription = SerialDisposable()Window.swift:27 private let _timerD = SerialDisposable()= SpinLock() 0016 0017 // state 0018 private var _current
SerialDisposable.swift:46 return _lock.calculateLocked {SerialDisposable.swift:51 let disposable: Disposable? = _lock.calculateLocked {SerialDisposable.swift:76 _lock.lock(); defer { _lock.unlock() }SerialDisposable.swift:76 _lock.lock(); defer { _lock.unlock() }= nil as Disposable? 0019 private var _disposed
SerialDisposable.swift:56 let toDispose = _currentSerialDisposable.swift:57 _current = newDisposableSerialDisposable.swift:82 let current = _currentSerialDisposable.swift:83 _current = nil= false 0020 0021 /** 0022 - returns: Was resource disposed. 0023 */ 0024 public var disposed
SerialDisposable.swift:26 return _disposedSerialDisposable.swift:52 if _disposed {SerialDisposable.swift:77 if _disposed {SerialDisposable.swift:81 _disposed = true: Bool { 0025 get { 0026 return _disposed 0027 } 0028 } 0029 0030 /** 0031 Initializes a new instance of the `SerialDisposable`. 0032 */ 0033 override public init
Buffer.swift:95 if _timerD.disposed {Timeout.swift:75 if _timerD.disposed {Window.swift:99 if _timerD.disposed {() { 0034 super.init() 0035 } 0036 0037 /** 0038 Gets or sets the underlying disposable. 0039 0040 Assigning this property disposes the previous disposable object. 0041 0042 If the `SerialDisposable` has already been disposed, assignment to this property causes immediate disposal of the given disposable object. 0043 */ 0044 public var disposable
Buffer.swift:45 private let _timerD = SerialDisposable()Catch.swift:40 private let _subscription = SerialDisposable()ObserveOn.swift:56 let _scheduleDisposable = SerialDisposable()SubscribeOn.swift:31 let disposeEverything = SerialDisposable()Switch.swift:19 private let _innerSubscription: SerialDisposable = SerialDisposable()TailRecursiveSink.swift:30 var _subscription = SerialDisposable()Throttle.swift:27 let cancellable = SerialDisposable()Timeout.swift:19 private let _timerD = SerialDisposable()Timeout.swift:20 private let _subscription = SerialDisposable()Window.swift:27 private let _timerD = SerialDisposable(): Disposable { 0045 get { 0046 return _lock.calculateLocked { 0047 return self.disposable 0048 } 0049 } 0050 set (newDisposable) { 0051 let disposable: Disposable? = _lock.calculateLocked { 0052 if _disposed { 0053 return newDisposable 0054 } 0055 else { 0056 let toDispose = _current 0057 _current = newDisposable 0058 return toDispose 0059 } 0060 } 0061 0062 if let disposable = disposable { 0063 disposable.dispose() 0064 } 0065 } 0066 } 0067 0068 /** 0069 Disposes the underlying disposable as well as all future replacements. 0070 */ 0071 public func dispose
Buffer.swift:105 _timerD.disposable = nextTimerCatch.swift:49 _subscription.disposable = d1Catch.swift:68 _subscription.disposable = catchSequence.subscribe(observer)ObserveOn.swift:78 _scheduleDisposable.disposable = self._scheduler.scheduleRecursive((), action: self.run)SerialDisposable.swift:47 return self.disposableSubscribeOn.swift:34 disposeEverything.disposable = cancelScheduleSubscribeOn.swift:38 disposeEverything.disposable = ScheduledDisposable(scheduler: self.parent.scheduler, disposable: subscription)Switch.swift:56 _innerSubscription.disposable = dTailRecursiveSink.swift:131 _subscription.disposable = disposableThrottle.swift:57 self.cancellable.disposable = dTimeout.swift:32 _subscription.disposable = originalTimeout.swift:80 _timerD.disposable = nextTimerTimeout.swift:92 self._subscription.disposable = self._parent._other.subscribeSafe(self.forwarder())Window.swift:109 _timerD.disposable = nextTimer() { 0072 _dispose()?.dispose() 0073 } 0074 0075 private func _dispose
ObserveOn.swift:126 _scheduleDisposable.dispose()TailRecursiveSink.swift:147 _subscription.dispose()() -> Disposable? { 0076 _lock.lock(); defer { _lock.unlock() } 0077 if _disposed { 0078 return nil 0079 } 0080 else { 0081 _disposed = true 0082 let current = _current 0083 _current = nil 0084 return current 0085 } 0086 } 0087 }
SerialDisposable.swift:72 _dispose()?.dispose()