
    /j!                          S SK r  " S S5      rg)    Nc                       \ rS rSrSrSS\4S jjrSS\S\4S jjrSS\S\4S jjrS\4S	 jr	S
\SS4S jr
S\S\S\4S jrSS\S\4S jjrS\4S jrSrg)AsyncAtomicCounter   z$Async atomic counter implementation.initialc                 D    Xl         [        R                  " 5       U l        g N)_valueasyncioLock_lock)selfr   s     Q/app/agent/.venv/lib/python3.13/site-packages/livekit/agents/utils/aio/counter.py__init__AsyncAtomicCounter.__init__   s    \\^
    nreturnc                    #    U R                    IS h  vN   U =R                  U-  sl        U R                  sS S S 5      IS h  vN   $  N6 N! , IS h  vN  (       d  f       g = f7fr   r   r	   r   r   s     r   	incrementAsyncAtomicCounter.increment   2     :::KK1K;; :::::C   A(A
A(!AA(AA(A(A%AA%!A(c                    #    U R                    IS h  vN   U =R                  U-  sl        U R                  sS S S 5      IS h  vN   $  N6 N! , IS h  vN  (       d  f       g = f7fr   r   r   s     r   	decrementAsyncAtomicCounter.decrement   r   r   c                    #    U R                    IS h  vN   U R                  sS S S 5      IS h  vN   $  N! N! , IS h  vN  (       d  f       g = f7fr   r   r   s    r   getAsyncAtomicCounter.get   s$     :::;; :::::s;   A5A9A7AAAA AAvalueNc                    #    U R                    IS h  vN   Xl        S S S 5      IS h  vN   g  N N! , IS h  vN  (       d  f       g = f7fr   r   )r   r"   s     r   setAsyncAtomicCounter.set   s"     :::K :::::s9   A/A3A1AAA
<A
Aexpectednewc                    #    U R                    IS h  vN   U R                  U:X  a  X l         S S S 5      IS h  vN   g S S S 5      IS h  vN   g N> N N	! , IS h  vN  (       d  f       g = f7f)NTFr   )r   r&   r'   s      r   compare_and_swap#AsyncAtomicCounter.compare_and_swap   s?     :::{{h&! :: 	 :::::s_   A2AA2AA2AA2 AA2AA2A2A2A/A!A/+A2reset_valuec                    #    U R                    ISh  vN   U R                  nXl        UsSSS5      ISh  vN   $  N) N! , ISh  vN  (       d  f       g= f7f)z/Atomically read the current value and reset it.Nr   )r   r+   prevs      r   get_and_reset AsyncAtomicCounter.get_and_reset$   s.     :::;;D%K :::::s>   A=AAA?AAAA
AAc                     U R                   $ )uE   Best-effort non-async read — safe if no await between read and use.)r	   r   s    r   
get_nowaitAsyncAtomicCounter.get_nowait+   s    {{r   r   )r   )   )__name__
__module____qualname____firstlineno____doc__intr   r   r   r    r$   boolr)   r.   r1   __static_attributes__ r   r   r   r      s    .$ $ S 
 S 
3  s  t  s   s 3 C r   r   )r
   r   r<   r   r   <module>r=      s    ) )r   