
    FCf                        d Z ddlmZ ddlZddlZddlZddlmZmZm	Z	  e
ed      xr ej                  j                  d       Z eede      ZddZ G d	 d
      Zy)zSelect / poll helper    )annotationsN)AnyOptionalcastpolljavaerrorc                    t        | d      rt        t        | j                        S | j                  rt        t        | j                  d         S y )Nerrnor   )hasattrr   intr   args)excs    V/var/www/highfloat_scraper/venv/lib/python3.12/site-packages/pymongo/socket_checker.py_errno_from_exceptionr      s<    sGC##
xxC!%%    c                  :    e Zd ZddZ	 d	 	 	 	 	 	 	 	 	 ddZddZy)	SocketCheckerc                V    |  t         rt        j                         | _        y d | _        y )N)
_HAVE_POLLselectr   _poller)selfs    r   __init__zSocketChecker.__init__&   s    !;;=DLDLr   c                   	 	 | j                   rt        j                  t        j                  z  }|r$|t        j                  z  t        j
                  z  }|r|t        j                  z  }| j                   j                  ||       	 |dn|dz  }| j                   j                  |      }t        |      | j                   j                  |       S |r|gng }|r|gng }	t        j                  ||	|g|      }t        |      S # | j                   j                  |       w xY w# t        t        f$ r7}
t        |
      t        j                   t        j"                  fv rY d}
~
c d}
~
ww xY w)zSelect for reads or writes with a timeout in seconds (or None).

        Returns True if the socket is readable/writable, False on timeout.
        Ni  )r   r   POLLERRPOLLHUPPOLLINPOLLPRIPOLLOUTregisterr   bool
unregisterany_SelectErrorOSErrorr   r   EINTREAGAIN)r   sockreadwritetimeoutmasktimeout_resrlistwlistr   s              r   r   zSocketChecker.select-   s,    <<!>>FNN:D#fmm3fnnD#fnn4LL))$56 ,3?4$"ll//9
  $Cy//5&*TFE&+TFE --utfgFC s8O //5 !'* (-%++u||1LLs<   BD$ .D 6D$ 1D$ D!!D$ $E*3+E%$E%%E*c                z    	 | j                  |d      S # t        t        f$ r  t        $ r Y yt        $ r Y yw xY w)z?Return True if we know socket has been closed, False otherwise.T)r*   )r   RuntimeErrorKeyError
ValueError	Exception)r   r)   s     r   socket_closedzSocketChecker.socket_closedW   sM    	;;t$;//h' 	
  	  	 	s    :::N)returnNone)FFr   )
r)   r   r*   r"   r+   r"   r,   zOptional[float]r8   r"   )r)   r   r8   r"   )__name__
__module____qualname__r   r   r7    r   r   r   r   %   sA      ^_((#(48(KZ(	(Tr   r   )r   BaseExceptionr8   zOptional[int])__doc__
__future__r   r   r   systypingr   r   r   r   platform
startswithr   getattrr&   r%   r   r   r=   r   r   <module>rF      s`     "   
 & & VV$LS\\-D-DV-L)L
vw0D Dr   