o
    ±zsgò  ã                   @   s<   d dl Z d dlZd dlmZmZ e e¡ZG dd„ dƒZdS )é    N)ÚCallableÚOptionalc                   @   sF   e Zd Zdedeegef fdd„Zdd„ Zdd„ Zd	efd
d„Z	dS )Ú
AsyncTimerÚcallbackÚ
timer_calcc                 C   s   || _ || _d | _d| _d S )Nr   )r   r   ÚtimerÚtries)Úselfr   r   © r
   úQ/var/www/html/minecraft/env/lib/python3.10/site-packages/realtime/_async/timer.pyÚ__init__	   s   
zAsyncTimer.__init__c                 C   s<   d| _ | jr| j ¡ s| j ¡  d | _t d¡ d S d S d S )Nr   zEAsyncTimer has been reset and any scheduler tasks have been cancelled)r   r   ÚdoneÚcancelÚloggerÚdebug)r	   r
   r
   r   Úreset   s   
ÿýzAsyncTimer.resetc                 C   sV   | j r| j  ¡  |  jd7  _|  | jd ¡}t d|› d¡ t |  |¡¡| _ d S )Né   z!Scheduling callback to run after z	 seconds.)	r   r   r   r   r   r   ÚasyncioÚcreate_taskÚ
_run_timer)r	   Údelayr
   r
   r   Úschedule_timeout   s   
zAsyncTimer.schedule_timeoutr   c              
   Ã   s|   zt  |¡I d H  |  ¡ I d H  W d S  t jy#   t d¡ Y d S  ty= } zt d|› ¡ W Y d }~d S d }~ww )NzAsyncTimer task was cancelled.zError in AsyncTimer callback: )r   Úsleepr   ÚCancelledErrorr   r   Ú	ExceptionÚ	exception)r	   r   Úer
   r
   r   r   !   s   €€ÿzAsyncTimer._run_timerN)
Ú__name__Ú
__module__Ú__qualname__r   Úintr   r   r   Úfloatr   r
   r
   r
   r   r      s
    		r   )	r   ÚloggingÚtypingr   r   Ú	getLoggerr   r   r   r
   r
   r
   r   Ú<module>   s
    
