U
vi @ s: d dl mZ d dlmZ d dlmZ G dd dejZdS ) )RLock)Optional)abcc sd e Zd ZdZdd fddZeej dddZejddd d
Z e
ee ZddddZ Z
S )
SerialDisposablezRepresents a disposable resource whose underlying disposable
resource can be replaced by another disposable resource, causing
automatic disposal of the previous underlying disposable resource.
N)returnc s" d | _ d| _t | _t d S )NF)currentis_disposedr locksuper__init__self __class__ V/opt/alt/python38/lib/python3.8/site-packages/reactivex/disposable/serialdisposable.pyr
s zSerialDisposable.__init__c C s | j S )N)r r r r r get_disposable s zSerialDisposable.get_disposable)valuer c C sL d}| j | j}|s"| j}|| _W 5 Q R X |dk r<| |rH| dS )zIf the SerialDisposable has already been disposed, assignment
to this property causes immediate disposal of the given
disposable object. Assigning this property disposes the previous
disposable object.Nr r r dispose)r
r oldZshould_disposer r r set_disposable s zSerialDisposable.set_disposablec C sB d}| j | js$d| _| j}d| _W 5 Q R X |dk r>| dS )zNDisposes the underlying disposable as well as all future
replacements.NTr )r
r r r r r - s zSerialDisposable.dispose)__name__
__module____qualname____doc__r r r DisposableBaser r propertyZ
disposabler
__classcell__r r r r r s
r N) threadingr typingr Z reactivexr r r r r r r