o
    Á¿iq  ã                   @   s0   d Z ddlmZmZ ddlZG dd„ deƒZdS )z7
A small class to run a task periodically in a thread.
é    )ÚThreadÚEventNc                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚPeriodicTimerc                 O   sH   t  | ¡ d| _|dksJ ‚|| _|sJ ‚|| _|| _|| _tƒ | _d S )NTr   )	r   Ú__init__ÚdaemonÚintervalÚfunctionÚargsÚkwargsr   Úfinished)Úselfr   r   r	   r
   © r   úV/home/ubuntu/.local/lib/python3.10/site-packages/datadog/threadstats/periodic_timer.pyr      s   
zPeriodicTimer.__init__c                 C   s   | j  ¡  d S ©N)r   Úset©r   r   r   r   Úend   s   zPeriodicTimer.endc                 C   sZ   | j  | j¡s+z| j| ji | j¤Ž W n ty!   td ur‚ Y nw | j  | j¡rd S d S r   )r   Úwaitr   r   r	   r
   Ú	ExceptionÚsysr   r   r   r   Úrun   s   ÿýýzPeriodicTimer.runN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r      s    r   )Ú__doc__Ú	threadingr   r   r   r   r   r   r   r   Ú<module>   s   