
    "j[                         d dl Z d dlZd dlmZ d dlmZ  ej                  e      Z G d d      Z	 G d d      Z
 G d d	e      Zy)
    N)Plugin)
AdbLoggingc                   *    e Zd Zd Zd Zd Zd Zd Zy)TotalCPUStatc                     || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _	        y N
usernicesystemidleiowaitirqsoftirqstealstolenguest
guest_nice)selfr
   r   r   r   r   r   r   r   r   r   s              `/var/www/oz-panel.ru/ozpay-pub/venv/lib/python3.12/site-packages/ppadb/plugins/device/cpustat.py__init__zTotalCPUStat.__init__
   sI    			&
$    c                    | j                   | j                  z   | j                  z   | j                  z   | j                  z   | j
                  z   | j                  z   | j                  z   | j                  z   | j                  z   S r   r	   r   s    r   totalzTotalCPUStat.total   s    yy499$t{{2TYY>LtxxWZ^ZfZffimiyiyy  }A  }G  }G  G  JN  JY  JY  Y  	Yr   c                    t        dddddddddd
      }| j                  |j                  z   |_        | j                  |j                  z   |_        | j                  |j                  z   |_        | j                  |j                  z   |_        | j
                  |j
                  z   |_        | j                  |j                  z   |_        | j                  |j                  z   |_        | j                  |j                  z   |_        | j                  |j                  z   |_	        | j                  |j                  z   |_
        |S Nr   r   r
   r   r   r   r   r   r   r   r   r   r   othersummarys      r   __add__zTotalCPUStat.__add__   s    q!Q1aAq!<yy5::-yy5::-u||3yy5::-u||3hh*,,6"..1B1BB

U[[0!__u/?/??r   c                    t        dddddddddd
      }| j                  |j                  z
  |_        | j                  |j                  z
  |_        | j                  |j                  z
  |_        | j                  |j                  z
  |_        | j
                  |j
                  z
  |_        | j                  |j                  z
  |_        | j                  |j                  z
  |_        | j                  |j                  z
  |_        | j                  |j                  z
  |_	        | j                  |j                  z
  |_
        |S r   r   r   r   results      r   __sub__zTotalCPUStat.__sub__)   s    aAq!Q1a;ii%**,ii%**,ell2ii%**,ell2XX		)
5!--0A0AAzzEKK/ OOe.>.>>r   c                 d    t        |       }dj                  d |j                         D              S )N, c              3   &   K   | ]	  }d |z    ywz%s: %sN .0items     r   	<genexpr>z'TotalCPUStat.__str__.<locals>.<genexpr>;        CTDC   varsjoinitemsr   attrss     r   __str__zTotalCPUStat.__str__9   &    T
yyCU[[]CCCr   N)__name__
__module____qualname__r   r   r!   r%   r7   r*   r   r   r   r   	   s    
%Y  Dr   r   c                   *    e Zd Zd Zd Zd Zd Zd Zy)ProcessCPUStatc                 .    || _         || _        || _        y r   )nameutimestime)r   r?   r@   rA   s       r   r   zProcessCPUStat.__init__?   s    	

r   c                     t        | j                  dd      }| j                  |j                  z   |_        | j                  |j                  z   |_        |S r   r=   r?   r@   rA   r   s      r   r!   zProcessCPUStat.__add__D   sA     Aq1

U[[0

U[[0r   c                     t        | j                  dd      }| j                  |j                  z
  |_        | j                  |j                  z
  |_        |S r   rC   r#   s      r   r%   zProcessCPUStat.__sub__J   sA    		1a0zzEKK/zzEKK/r   c                 d    t        |       }dj                  d |j                         D              S )Nr'   c              3   &   K   | ]	  }d |z    ywr)   r*   r+   s     r   r.   z)ProcessCPUStat.__str__.<locals>.<genexpr>R   r/   r0   r1   r5   s     r   r7   zProcessCPUStat.__str__P   r8   r   c                 4    | j                   | j                  z   S r   )r@   rA   r   s    r   r   zProcessCPUStat.totalT   s    zzDJJ&&r   N)r9   r:   r;   r   r!   r%   r7   r   r*   r   r   r=   r=   >   s    
D'r   r=   c                   V    e Zd Z ej                  d      Zd Zd	dZd Zd Z	d Z
d Zy)
CPUStatz`cpu\s+([\d]+)\s([\d]+)\s([\d]+)\s([\d]+)\s([\d]+)\s([\d]+)\s([\d]+)\s([\d]+)\s([\d]+)\s([\d]+)\sc                 "    | j                         S r   )get_total_cpur   s    r   	cpu_timeszCPUStat.cpu_times\   s    !!##r   c                     | j                         }t        j                  |       | j                         }||z
  }t        |j                  |j
                  z   |j                         z  dz  d      S )Nd      )rL   timesleeproundr
   r   r   )r   intervalcpu_times_startcpu_times_enddiffs        r   cpu_percentzCPUStat.cpu_percent_   sZ    ..*

8(.tyy4;;.$**,>#EqIIr   c                 f    | j                  d      }t        j                  d|      }t        |      S )Nzls /sys/devices/system/cpuz	cpu[0-9+])shellrefindalllenr   r$   matchs      r   	cpu_countzCPUStat.cpu_countg   s+    89

<05zr   c                    | j                  d      }| j                  j                  |      }|s2t        |j	                               dk7  rt
        j                  d       y t        t        d |j	                                S )Nzcat /proc/stat
   z-Can't get the total cpu usage from /proc/statc                     t        |       S r   )int)xs    r   <lambda>z'CPUStat.get_total_cpu.<locals>.<lambda>s   s
    3q6 r   )	rY   total_cpu_patternsearchr\   groupsloggererrorr   mapr]   s      r   rK   zCPUStat.get_total_cpul   se    ,-&&--f5U\\^,2LLHIS!15<<>BCCr   c                     | j                  dj                  |            j                         }d|v rt        ddd      S |j	                         }t        |d   t        |d         t        |d               S )Nzcat /proc/{}/statNo such file or directory r            )rY   formatstripr=   splitrc   )r   pidr$   r4   s       r   get_pid_cpuzCPUStat.get_pid_cpuu   sj    /66s;<BBD&&0!"a++LLNE!%(Cb	NCb	NKKr   c           	      d   | j                  dj                  |            }t        t        d |j	                  d                  }i }|D ]c  }| j                  dj                  ||            }d|vs)|j	                         }t        |d   t        |d         t        |d               ||<   e |S )	Nzls /proc/{}/taskc                 "    | j                         S r   )rs   )lines    r   re   z,CPUStat.get_all_thread_cpu.<locals>.<lambda>   s    TZZ\ r   
zcat /proc/{}/task/{}/statrm   ro   rp   rq   )rY   rr   listrk   rt   r=   rc   )r   ru   r$   tidsthread_resulttidr4   s          r   get_all_thread_cpuzCPUStat.get_all_thread_cpu~   s    .55c:;C16<<3EFG 	^CZZ ; B B3 LMF*&8%3E!Hc%)ncRWXZR[n%]c"	^ r   N)ro   )r9   r:   r;   rZ   compilerf   rL   rW   r_   rK   rv   r   r*   r   r   rI   rI   X   s8    "

jl$J
DLr   rI   )rZ   rP   ppadb.pluginsr   ppadb.utils.loggerr   
get_loggerr9   ri   r   r=   rI   r*   r   r   <module>r      sF    	    )			x	(2D 2Dj' '42f 2r   