
    =OOf)                     ^    d Z ddlmZmZ ddlmZ ddlmZ ddlmZm	Z	m
Z
mZ  G d d	e      Zy
)
    )datetime	timedelta)linesep   )LDAPMetricsError   )loglog_enabledERRORBASICc                   X    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
dd	Zd
 Zed        Zy)ConnectionUsagez0
    Collect statistics on connection usage
    c                    d| _         d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _	        d| _
        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        t1        t2              rt5        t2        d       y y )Nr   zreset usage metrics)open_socketsclosed_socketswrapped_socketsbytes_transmittedbytes_receivedmessages_transmittedmessages_received
operationsabandon_operationsadd_operationsbind_operationscompare_operationsdelete_operationsextended_operationsmodify_operationsmodify_dn_operationssearch_operationsunbind_operationsreferrals_receivedreferrals_followedreferrals_connectionsrestartable_failuresrestartable_successesservers_from_poolr   r   r
   selfs    Q/var/www/premiumrankchecker/venv/lib/python3.12/site-packages/ldap3/core/usage.pyresetzConnectionUsage.reset&   s     !"$%!!""# "#!"#$ !"$%!!"!""#"#%&"$%!%&"!"u,-     c                    d | _         d | _        d | _        d | _        d | _        d| _        d| _        d| _        d| _        d| _	        d| _
        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        t;        t<              rt?        t<        d       y y )Nr   zinstantiated Usage object) initial_connection_start_timeopen_socket_start_timeconnection_stop_timelast_transmitted_timelast_received_timer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r   r   r
   r)   s    r+   __init__zConnectionUsage.__init__B   s   -1*&*#$(!%)""& !"$%!!""# "#!"#$ !"$%!!"!""#"#%&"$%!%&"!"u23 r-   c                 x
   dt         z   }|dt        | j                        z   dz   t         z   z  }|d| j                  r#t        | j                  j	                               ndz   t         z   z  }|d| j
                  r#t        | j
                  j	                               ndz   t         z   z  }|d| j                  r#t        | j                  j	                               ndz   t         z   z  }|d| j                  r#t        | j                  j	                               ndz   t         z   z  }|d	| j                  r#t        | j                  j	                               ndz   t         z   z  }|d
t         z   z  }|dt        | j                        z   t         z   z  }|dt        | j                        z   t         z   z  }|dt        | j                        z   t         z   z  }|dt        | j                        z   t         z   z  }|dt        | j                  | j                  z         z   t         z   z  }|dt        | j                        z   t         z   z  }|dt        | j                        z   t         z   z  }|dt        | j                  | j                   z         z   t         z   z  }|dt        | j                        z   t         z   z  }|dt        | j                         z   t         z   z  }|dt        | j"                        z   t         z   z  }|dt        | j$                        z   t         z   z  }|dt        | j&                        z   t         z   z  }|dt        | j(                        z   t         z   z  }|dt        | j*                        z   t         z   z  }|dt        | j,                        z   t         z   z  }|dt        | j.                        z   t         z   z  }|dt        | j0                        z   t         z   z  }|dt        | j2                        z   t         z   z  }|dt        | j4                        z   t         z   z  }|dt        | j6                        z   t         z   z  }|dt         z   z  }|dt        | j8                        z   t         z   z  }|dt        | j:                        z   t         z   z  }|d t        | j<                        z   t         z   z  }|d!t        | j>                  | j@                  z         z   t         z   z  }|d"t        | j>                        z   t         z   z  }|d#t        | j@                        z   t         z   z  }|S )$NzConnection Usage:z  Time: [elapsed:          ]z    Initial start time:     z    Open socket time:      z    Last transmitted time: z    Last received time:    z    Close socket time:     z	  Server:z    Servers from pool:     z    Sockets open:          z    Sockets closed:        z    Sockets wrapped:       z  Bytes:                   z    Transmitted:           z    Received:              z  Messages:                z  Operations:              z    Abandon:               z    Bind:                  z    Add:                   z    Compare:               z    Delete:                z    Extended:              z    Modify:                z    ModifyDn:              z    Search:                z    Unbind:                z  Referrals:               z    Followed:              z    Connections:           z  Restartable tries:       z    Failed restarts:       z    Successful restarts:   )!r   strelapsed_timer/   	isoformatr0   r2   r3   r1   r(   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   )r*   rs     r+   __repr__zConnectionUsage.__repr__d   s0   ')	*S1B1B-CCcIGSS	*ei  fH  fHc$2T2T2^2^2`.a  NP  Q  T[  [  	[	*^b^y^yc$2M2M2W2W2Y.Z  @B  C  FM  M  	M	*]a]w]wc$2L2L2V2V2X.Y}  A  DK  K  	K	*Z^ZqZqc$2I2I2S2S2U.Vwyz  ~E  E  	E	*\`\u\uc$2K2K2U2U2W.X{}~  BI  I  	I	[7""	*S1G1G-HH7RR	*S1B1B-CCgMM	*S1D1D-EEOO	*S1E1E-FFPP	*S1G1G$J]J]1]-^^ahhh	*S1G1G-HH7RR	*S1D1D-EEOO	*S1J1JTMcMc1c-ddgnnn	*S1J1J-KKgUU	*S1G1G-HH7RR	*S-AAGKK	*S1H1H-IIGSS	*S1E1E-FFPP	*S1D1D-EEOO	*S1H1H-IIGSS	*S1G1G-HH7RR	*S1I1I-JJWTT	*S1G1G-HH7RR	*S1J1J-KKgUU	*S1G1G-HH7RR	*S1G1G-HH7RR	*W44	*S1H1H-IIGSS	*S1H1H-IIGSS	*S1K1K-LLwVV	*S1J1JTMgMg1g-hhkrrr	*S1J1J-KKgUU	*S1K1K-LLwVVr-   c                 "    | j                         S )N)r<   r)   s    r+   __str__zConnectionUsage.__str__   s    }}r-   c                    t        |t              st        d      | xj                  |j                  z  c_        | xj                  |j                  z  c_        | xj
                  |j
                  z  c_        | xj                  |j                  z  c_        | xj                  |j                  z  c_        | xj                  |j                  z  c_        | xj                  |j                  z  c_	        | xj                  |j                  z  c_
        | xj                  |j                  z  c_        | xj                  |j                  z  c_        | xj                  |j                  z  c_        | xj                  |j                  z  c_        | xj                  |j                  z  c_        | xj                   |j                   z  c_        | xj"                  |j"                  z  c_        | xj$                  |j$                  z  c_        | xj&                  |j&                  z  c_        | xj(                  |j(                  z  c_        | xj*                  |j*                  z  c_        | xj,                  |j,                  z  c_        | xj.                  |j.                  z  c_        | xj0                  |j0                  z  c_        | xj2                  |j2                  z  c_        | xj4                  |j4                  z  c_        | S )Nz unable to add to ConnectionUsage)
isinstancer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   )r*   others     r+   __iadd__zConnectionUsage.__iadd__   sB   %1"#EFFU///u333 5 55%"9"99u333!!U%?%??!%"9"995+++5#;#;;u333 5 555#;#;;%"9"99  E$=$== %"9"99!!U%?%??!%"9"99%"9"995#;#;;5#;#;;""e&A&AA"!!U%?%??!""e&A&AA"%"9"99r-   c                 f   t        j                         | _        | xj                  |z  c_        | xj                  dz  c_        | xj
                  dz  c_        |d   dk(  r| xj                  dz  c_        y |d   dk(  r| xj                  dz  c_        y |d   dk(  r| xj                  dz  c_        y |d   dk(  r| xj                  dz  c_	        y |d   dk(  r| xj                  dz  c_
        y |d   dk(  r| xj                  dz  c_        y |d   d	k(  r| xj                  dz  c_        y |d   d
k(  r| xj                  dz  c_        y |d   dk(  r| xj                  dz  c_        y |d   dk(  r| xj                  dz  c_        y t!        t"              rt%        t"        d|d          t'        d      )Nr   typeabandonRequest
addRequestbindRequestcompareRequest
delRequestextendedReqmodifyRequestmodDNRequestsearchRequestunbindRequestz5unable to collect usage for unknown message type <%s>z0unable to collect usage for unknown message type)r   nowr2   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r   r   r
   r   )r*   messagelengths      r+   update_transmitted_messagez*ConnectionUsage.update_transmitted_message   s   %-\\^"&(1!!Q&!6?..##q(#V_,1$V_-  A% V_ 00##q(#V_,""a'"V_-$$)$V_/""a'"V_.%%*%V_/""a'"V_/""a'"5!ERT[\bTcd"#UVVr-   c                     t        j                         | _        | xj                  |z  c_        | xj                  dz  c_        y )Nr   )r   rO   r3   r   r   )r*   rQ   s     r+   update_received_messagez'ConnectionUsage.update_received_message   s2    "*,,.v%!#r-   c                     |r| j                          t        j                         | _        d | _        | j
                  s| j                  | _        t        t              rt        t        d       y y )Nzstart collecting usage metrics)	r,   r   rO   r0   r1   r/   r   r   r
   )r*   r,   s     r+   startzConnectionUsage.start   sS    JJL&.lln#$(!11151L1LD.u78 r-   c                     | j                   r:t        j                         | _        t	        t
              rt        t
        d       y y y )Nzstop collecting usage metrics)r0   r   rO   r1   r   r   r
   r)   s    r+   stopzConnectionUsage.stop   s6    &&(0D%5!E:; " 'r-   c                     | j                   r| j                   | j                  z
  S | j                  r!t        j                         | j                  z
  S t	        d      S )Nr   )r1   r0   r   rO   r   r)   s    r+   r9   zConnectionUsage.elapsed_time   sM    $$,,t/J/JJJEIE`E`HLLNT%@%@@rfopqfrrr-   N)T)__name__
__module____qualname____doc__r,   r4   r<   r>   rB   rR   rT   rV   rX   propertyr9    r-   r+   r   r   !   sM    .8 4D%N<W<$
	9< s sr-   r   N)r]   r   r   osr   
exceptionsr   	utils.logr
   r   r   r   objectr   r_   r-   r+   <module>rd      s+   2 )  ( 6 6Dsf Dsr-   