
    l8'h                       d Z ddlmZ ddlZddlZddlZddl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 dZ	 dd
lmZmZmZmZ dZ ej2                  d      j4                  Z ej2                  d      j4                  ZdZeegej>                  ZddZ ejB                  dk7  r	 	 	 	 	 	 	 	 ddZ"n	 	 	 	 	 	 	 	 ddZ"ddZ#y# e$ r d	ZY w xY w# e$ r d	ZeZddlmZmZmZ Y w xY w)z&Internal network layer helper methods.    )annotationsN)AbstractEventLoopFuture)Union)ssl_support)SSLError	SSLSocketTF)BLOCKING_IO_LOOKUP_ERRORBLOCKING_IO_READ_ERRORBLOCKING_IO_WRITE_ERROR_sslConn)r
   r   r   z<iiiiz<iiB      ?c                  K   | j                         }| j                  d       t        j                         }	 t        rAt        | t        t        f      r+t        j                  t        | ||      |       d {    n/t        j                  |j                  | |      |       d {    | j                  |       y 7 F7 # t        j                  $ r}t        j                  d      |d }~ww xY w# | j                  |       w xY ww)Ng        )timeoutz	timed out)
gettimeout
settimeoutasyncioget_event_loop	_HAVE_SSL
isinstancer	   r   wait_for_async_sendall_sslsock_sendallTimeoutErrorsocketr   )sockbufr   loopexcs        Q/var/www/html/trade_iq/venv/lib/python3.12/site-packages/pymongo/network_layer.pyasync_sendallr!   =   s     ooGOOC!!#D	!D9h*?@""#5dC#FPWXXX""4#4#4T3#?QQQ
 	  YQ 3nn[)s23 	 sY   6DAC :C;/C *C+C /DC C C3C..C33C6 6D		Dwin32c                  K   t        |      }| j                         d}dfd}|t        |      k  r(	 || j                  ||d        z  }|t        |      k  r'y y # t        $ r}| j                         dk(  rt        d      d t        |t              r.j                         }j                  ||       | d {  7   t        |t              r.j                         }j                  ||       | d {  7   t        rQt        |t              rAj                         }j                  ||       j                  ||       | d {  7   Y d }~d }~ww xY ww)Nr   c                    j                         j                         | j                         ry | j                  d        y N)remove_writerremove_readerdone
set_result)futfdr   s    r    	_is_readyz%_async_sendall_ssl.<locals>._is_readyV   s7    r"r"xxzNN4     z!Underlying socket has been closed)r*   r   returnNone)
memoryviewfilenolensendBLOCKING_IO_ERRORSr   r   r   create_future
add_readerr   
add_writer_HAVE_PYOPENSSLr
   )	r   r   r   viewsentr,   r   r*   r+   s	     `     @r    r   r   O   s3     #[[]	! SXo		$tu+.. SXo & [[]8"#FGTQc#9:,,.COOB	37IIc#:;,,.COOB	37II"z#7O'P,,.COOB	37OOB	37II#sZ   3E+A  E+E+ 	E()AE#C=E# DAE#EE#E+#E((E+c                   K   t        |      }t        |      }d}||k  r!	 | j                  ||d        }||z  }||k  r y y # t        $ r# t	        j
                  d       d {  7   d}Y 8w xY ww)Nr   r   )r1   r3   r4   r5   r   sleep)r   r   dummyr:   total_length
total_sentr;   s          r    r   r   u   s~      #3x
<'yyjk!23 $J <' & mmC(((s9   A1A 
A1 A1!A.#A&$A.+A1-A..A1c                &    | j                  |       y r%   )sendall)r   r   s     r    rB   rB      s    LLr-   )r   Union[socket.socket, _sslConn]r   bytesr/   r0   )r   rC   r   rD   r   r   r/   r0   )r   rC   r   rD   r>   r   r/   r0   )$__doc__
__future__r   r   r   structsysr   r   typingr   pymongor   sslr   r	   r   ImportErrorpymongo.pyopenssl_contextr
   r   r   r   r9   pymongo.ssl_supportStructunpack_UNPACK_HEADER_UNPACK_COMPRESSION_HEADER_POLL_TIMEOUTBlockingIOErrorr5   r!   platformr   rB    r-   r    <module>rW      s2   - "    
 -  'I  O w'..*V]]6299 %'?a+B`B`a !  <<7","38"@Q"	"L,38AR	G  I  OH s"   
C C CCC&%C&