mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Experimental: weak subscribers
This commit is contained in:
parent
2f5848d354
commit
0fd360f481
@ -24,7 +24,7 @@ public func |> <T, U>(value: T, function: ((T) -> U)) -> U {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private final class SubscriberDisposable<T, E>: Disposable, CustomStringConvertible {
|
private final class SubscriberDisposable<T, E>: Disposable, CustomStringConvertible {
|
||||||
private let subscriber: Subscriber<T, E>
|
private weak var subscriber: Subscriber<T, E>?
|
||||||
|
|
||||||
private var lock = pthread_mutex_t()
|
private var lock = pthread_mutex_t()
|
||||||
private var disposable: Disposable?
|
private var disposable: Disposable?
|
||||||
@ -41,15 +41,18 @@ private final class SubscriberDisposable<T, E>: Disposable, CustomStringConverti
|
|||||||
}
|
}
|
||||||
|
|
||||||
func dispose() {
|
func dispose() {
|
||||||
self.subscriber.markTerminatedWithoutDisposal()
|
var subscriber: Subscriber<T, E>?
|
||||||
|
|
||||||
var disposeItem: Disposable?
|
var disposeItem: Disposable?
|
||||||
pthread_mutex_lock(&self.lock)
|
pthread_mutex_lock(&self.lock)
|
||||||
disposeItem = self.disposable
|
disposeItem = self.disposable
|
||||||
|
subscriber = self.subscriber
|
||||||
|
self.subscriber = nil
|
||||||
self.disposable = nil
|
self.disposable = nil
|
||||||
pthread_mutex_unlock(&self.lock)
|
pthread_mutex_unlock(&self.lock)
|
||||||
|
|
||||||
disposeItem?.dispose()
|
disposeItem?.dispose()
|
||||||
|
subscriber?.markTerminatedWithoutDisposal()
|
||||||
}
|
}
|
||||||
|
|
||||||
public var description: String {
|
public var description: String {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user