Skip to content

Instantly share code, notes, and snippets.

@lizixroy
Created September 4, 2016 19:55
Show Gist options
  • Save lizixroy/09371f9a361f9ef96da04f6d24281cb2 to your computer and use it in GitHub Desktop.
Save lizixroy/09371f9a361f9ef96da04f6d24281cb2 to your computer and use it in GitHub Desktop.
RxSwift-article-8.swift
public override func subscribe<O : ObserverType where O.E == Element>(observer: O) -> Disposable {
_lock.lock(); defer { _lock.unlock() }
return _synchronized_subscribe(observer)
}
func _synchronized_subscribe<O : ObserverType where O.E == E>(observer: O) -> Disposable {
if _disposed {
observer.on(.Error(RxError.Disposed(object: self)))
return NopDisposable.instance
}
if let stoppedEvent = _stoppedEvent {
observer.on(stoppedEvent)
return NopDisposable.instance
}
let key = _observers.insert(observer.asObserver())
observer.on(.Next(_value))
return SubscriptionDisposable(owner: self, key: key)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment