U vi@s:ddlmZddlmZddlmZGdddejZdS))RLock)Optional)abccsdeZdZdZddfdd ZeejdddZejddd d Z e ee Z ddd d Z 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)returncs"d|_d|_t|_tdS)NF)current is_disposedrlocksuper__init__self __class__V/opt/alt/python38/lib/python3.8/site-packages/reactivex/disposable/serialdisposable.pyr szSerialDisposable.__init__cCs|jS)N)rr rrrget_disposableszSerialDisposable.get_disposable)valuerc CsLd}|j|j}|s"|j}||_W5QRX|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 rrdispose)r roldZshould_disposerrrset_disposableszSerialDisposable.set_disposablec CsBd}|j|js$d|_|j}d|_W5QRX|dk r>|dS)zNDisposes the underlying disposable as well as all future replacements.NTr)r rrrrr-szSerialDisposable.dispose)__name__ __module__ __qualname____doc__r rrDisposableBaserrpropertyZ disposabler __classcell__rrrrrs  rN) threadingrtypingrZ reactivexrrrrrrrs