a
    òñ"hË  ã                   @   s\   d dl Z d dlZd dlZd dlZd dlZd dlZdZde ed ¡ ZdZ	G dd„ dƒZ
dS )é    Né   é<   é   c                   @   sd   e Zd Zdd„ Zejejfdd„Ze	j
e	jejfdd„Zddd	„Zejejejfd
d„Zdd„ ZdS )ÚWindowsLoadTrackerc                 C   sP   t  t j¡ g | _d | _t d ddd ¡| _t d ddd ¡| _t	 
| jdi ¡ d S )NTF© )ÚwinregZQueryInfoKeyÚHKEY_PERFORMANCE_DATAÚ_valuesÚ_loadÚ_overlappedZCreateEventÚ_runningÚ_stoppedÚ_threadÚstart_new_threadÚ_update_load©Úselfr   r   úB/opt/python-3.9.21/usr/lib/python3.9/test/libregrtest/win_utils.pyÚ__init__   s    zWindowsLoadTracker.__init__c                 C   s$   || j dƒr|  ¡  q || jƒ d S )Niè  )r   Ú_calculate_loadr   )r   Ú_waitÚ_signalr   r   r   r   &   s    
zWindowsLoadTracker._update_loadc                 C   sÞ   ||dƒ\}}|d|dƒ\}|d||ƒ\}}|| }	|| }
|
|	k r€|d||
ƒ\}}}|
|7 }
|dkr<|	| }|d||ƒ\}q„q<d S | j d ur¨| j t |dt   | _ n2t| jƒtk rÄ| j |¡ nt| jƒt| jƒ | _ d S )NÚ2ÚLé   Z4xLLZLL28xLé,   g      ð?)r
   ÚLOAD_FACTOR_1Úlenr	   ÚNVALUEÚappendÚsum)r   Z_queryZ_hkeyZ_unpackÚdataÚ_Z	obj_startZ
data_startZ
defn_startZ	data_baseZ	defn_baseÚsizeÚidxÚoffsetZcounter_offsetZprocessor_queue_lengthr   r   r   r   0   s(    


ÿz"WindowsLoadTracker._calculate_loadTc                 C   s   |   ¡  d S ©N)Ú__del__)r   Úkillr   r   r   Úcloseh   s    zWindowsLoadTracker.closec                 C   sD   | j d ur@|| j ƒ || jdƒ || j ƒ || jƒ d  | _ | _d S )Néÿÿÿÿ)r   r   )r   r   Ú_closer   r   r   r   r'   l   s    



zWindowsLoadTracker.__del__c                 C   s   | j S r&   )r
   r   r   r   r   Ú
getloadavg{   s    zWindowsLoadTracker.getloadavgN)T)Ú__name__Ú
__module__Ú__qualname__r   Ú_winapiZWaitForSingleObjectr   ZSetEventr   r   ZQueryValueExr   ÚstructÚunpack_fromr   r)   ZCloseHandler'   r,   r   r   r   r   r      s   ý
ü
8
ü
r   )r   r   r0   Úmathr1   r   ZSAMPLING_INTERVALÚexpr   r   r   r   r   r   r   Ú<module>   s   