o
    i                     @  sF   d dl mZ d dlZd dlmZ ddd	ZG d
d dZdddZdS )    )annotationsN)Anyfutasyncio.Future[Any]returnNonec                 C  s   |   rd S | d  d S N)	cancelled
set_result)r    r   c/var/www/html/livekit_bhavya/venv/lib/python3.10/site-packages/livekit/agents/utils/aio/interval.py_finish_fut   s   r   c                   @  s>   e Zd ZdddZdddZdd
dZdddZdddZdS )Intervalintervalfloatr   r   c                 C  s   || _ d| _d| _d | _d S )Ng        r   )	_interval_last_sleep_i_handler)selfr   r   r   r   __init__   s   
zInterval.__init__c                 C  sJ   | j r | jr | j s | j  t }|| jt| j | _d S d| _	d S )Nr   )
_futr   r	   cancelasyncioget_event_loop
call_laterr   r   r   )r   loopr   r   r   reset   s
   

zInterval.resetintc                   s   t  }| jr;| | _| j|  | j }||t| j| _	z| jI d H  W | j	
  n| j	
  w |  jd7  _| | _| jS )N   )r   r   r   create_futurer   timer   r   r   r   r   r   )r   r   delayr   r   r   tick   s   

zInterval.tickc                 C  s   | S r   r   r   r   r   r   	__aiter__-   s   zInterval.__aiter__c                   s   |   I d H S r   )r#   r$   r   r   r   	__anext__0   s   zInterval.__anext__N)r   r   r   r   )r   r   )r   r   )r   r   )__name__
__module____qualname__r   r   r#   r%   r&   r   r   r   r   r      s    



r   r   r   c                 C  s   t | S r   )r   )r   r   r   r   r   4   s   )r   r   r   r   )r   r   r   r   )
__future__r   r   typingr   r   r   r   r   r   r   r   <module>   s    
&