HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //lib/python3/dist-packages/landscape/lib/__pycache__/backoff.cpython-38.pyc
U

���c��@sddlZGdd�d�ZdS)�Nc@s:eZdZdZdd�Zdd�Zdd�Zdd	�Zddd�Zd
S)�ExponentialBackoffz^
    Keeps track of a backoff delay that staggers down and staggers up
    exponentially.
    cCsd|_||_||_dS)Nr)�_error_count�_start_delay�
_max_delay)�selfZstart_delayZ	max_delay�r�7/usr/lib/python3/dist-packages/landscape/lib/backoff.py�__init__
szExponentialBackoff.__init__cCs |jd8_t|jd�|_dS)z0Decreases error count with zero being the lowest�rN)r�max�rrrr�decreaseszExponentialBackoff.decreasecCs |��|jkr|jd7_dS)z=Increases error count but not higher than gives the max delayr
N)�	get_delayrrrrrr�increaseszExponentialBackoff.increasecCs0|jrd|jd|j}nd}tt|�|j�S)aR
        Calculates the delay using formula that gives this chart. In this
        specific example start is 5 seconds and max is 60 seconds
                Count  Delay
                0      0
                1      5
                2      10
                3      20
                4      40
                5      60 (max)
        �r
r)rr�min�intr)r�delayrrrrszExponentialBackoff.get_delay��?cCs0|��}|d|}||t��}t||�S)z�
        Adds randomness to the specified stagger of the delay. For example
        for a delay of 12 and 25% stagger, it works out to 9 + rand(0,3)
        r
)r�randomr)rZstagger_fractionrZnon_random_partZrandom_partrrr�get_random_delay-sz#ExponentialBackoff.get_random_delayN)r)	�__name__�
__module__�__qualname__�__doc__r	r
rrrrrrrrsr)rrrrrr�<module>s