a
    xd"                     @   s   d dl Z d dlZd dlZd dlZddlmZ ddlmZm	Z	m
Z
 ddlT ddlmZ dd Zd	d
 Zdd Zdd Zdd Zdd Zdd Zdd ZdS )    N   )_core)check_half_closeable_streamwait_all_tasks_blockedassert_checkpoints)*)socketc               
      sD  t  \} }| f |B tt t|  W d    n1 s@0    Y  W d    n1 s^0    Y  W d    n1 s|0    Y  tjtjdB}tt	 t| W d    n1 s0    Y  W d    n1 s0    Y  t \} }| N |( t| }|j| u sJ W d    n1 s,0    Y  W d    n1 sL0    Y  t }|
dI d H  |d t }|| I d H  t|}|tjtjsJ |tjtjd |tjtjrJ |tjtjd}t|ts J W d    n1 s0    Y  W d    n1 s60    Y  d S )Ntypez	127.0.0.1r      F)stdlib_socket
socketpairpytestraises	TypeErrorSocketStreamtsocketr   
SOCK_DGRAM
ValueErrorbindlistenconnectgetsockname
getsockoptIPPROTO_TCPTCP_NODELAY
setsockopt
isinstancebytes)absockslisten_sockclient_sock r&   X/var/www/html/Ranjet/env/lib/python3.9/site-packages/trio/tests/test_highlevel_socket.pytest_SocketStream_basics   s,    bDP


r(   c                     s(  d t  \} }|  | t| t| fdd} fdd}t 4 I d H *}|| || W d   I d H  q1 I d H s0    Y  dI d H  dI d H dksJ  I d H  dI d H dksJ W d    n1 s0    Y  W d    n1 s0    Y  d S )	Ni c                     s(   t  } | I d H  | t 7 } d S N)	bytearraysend_allr   )data)BIGr    r&   r'   senderB   s    z*test_SocketStream_send_all.<locals>.senderc                     sB   t  I d H  d} |  k r2| t I d H 7 } q|  ks>J d S )Nr   )r   lenreceive_some)nbytes)r-   r!   r&   r'   receiverZ   s
    z,test_SocketStream_send_all.<locals>.receiver   e
       )	r   r   r   r   open_nursery
start_soonr+   r0   Zsend_eof)Za_sockZb_sockr.   r2   nurseryr&   )r-   r    r!   r'   test_SocketStream_send_all7   s    
4r9   c              	      sj    fdd}dd }t  4 I d H ,}|| ||| W d   I d H  qf1 I d H s\0    Y  d S )Nc                      s     dd I d H  q d S )N   xi'  )r+   r&   r#   r&   r'   r.   o   s    zfill_stream.<locals>.senderc                    s   t  I d H  | j  d S r)   )r   Zcancel_scopecancel)r8   r&   r&   r'   waiters   s    zfill_stream.<locals>.waiter)r   r6   r7   )r#   r.   r=   r8   r&   r;   r'   fill_streamn   s
    
r>   c                     s(   dd   fdd} t  | I d H  d S )Nc                     s   t  \} }t| t|fS r)   )r   r   r   leftrightr&   r&   r'   stream_maker}   s    z/test_SocketStream_generic.<locals>.stream_makerc                     s4     I d H \} }t | I d H  t |I d H  | |fS r)   )r>   r?   rB   r&   r'   clogged_stream_maker   s    z7test_SocketStream_generic.<locals>.clogged_stream_maker)r   )rD   r&   rC   r'   test_SocketStream_generic|   s    rE   c               	      s"  t  V} | d | d tt t|  W d    n1 sF0    Y  W d    n1 sd0    Y  tjtj	d\} | dI d H  tt
}t|  W d    n1 s0    Y  |d W d    n1 s0    Y  tjdkrlt ^} | dI d H  tt
}t|  W d    n1 s80    Y  |d W d    n1 sb0    Y  t }|dI d H  |d t|}|j|u sJ t }|| I d H  t  | I d H }W d    n1 s0    Y  t|tsJ |j | ks J |j | ks8J t  | I d H  W d    n1 sd0    Y  t  | I d H  W d    n1 s0    Y  t L ttj | I d H  W d    n1 s0    Y  W d    n1 s0    Y  |  | I d H  d S )Nr   r4   r	   z.*SOCK_STREAMdarwinz.*listen)r   r   r   r   r   r   r   SocketListenerr   r   r   matchsysplatformr   r   r   acceptr   r   getpeernameacloser   ClosedResourceErrorclose)r#   excinfor$   listenerr%   Zserver_streamr&   r&   r'   test_SocketListener   sJ    


D&(
(*
...NrR   c               	      s   t  } | dI d H  | d t| }|   t J tt	j
 | I d H  W d    n1 sj0    Y  W d    n1 s0    Y  d S )Nr   r4   )r   r   r   r   rG   rO   r   r   r   r   rN   rK   )r$   rQ   r&   r&   r'   +test_SocketListener_socket_closed_underfoot   s    
rS   c               
      s~  G dd dt j} | g }| ttjdttjdttjd|ttjdttjdttj	d|g}t
|}t , | I d H }|j|u sJ W d    n1 s0    Y  tjtjtj	fD ]v}t Z tt}| I d H  W d    n1 s0    Y  |jj|ksJ W d    q1 s(0    Y  qt . | I d H }|j|u sZJ W d    n1 sp0    Y  d S )	Nc                   @   s2   e Zd Zdd ZejZdd Zdd Zdd Z	d	S )
z5test_SocketListener_accept_errors.<locals>.FakeSocketc                 S   s   t || _d S r)   )iter_events)selfeventsr&   r&   r'   __init__   s    z>test_SocketListener_accept_errors.<locals>.FakeSocket.__init__c                 S   s   dS )NTr&   )rV   leveloptr&   r&   r'   r      s    z@test_SocketListener_accept_errors.<locals>.FakeSocket.getsockoptc                 S   s   d S r)   r&   )rV   rY   rZ   valuer&   r&   r'   r      s    z@test_SocketListener_accept_errors.<locals>.FakeSocket.setsockoptc                    s4   t  I d H  t| j}t|tr(|n|d fS d S r)   )r   
checkpointnextrU   r   BaseException)rV   eventr&   r&   r'   rK      s
    

z<test_SocketListener_accept_errors.<locals>.FakeSocket.acceptN)
__name__
__module____qualname__rX   r   SOCK_STREAMr
   r   r   rK   r&   r&   r&   r'   
FakeSocket   s
   rd   zConnection abortedzPermission deniedzBad protocolzOut of file descriptorsz$attempt to write to read-only memoryzout of buffers)r   
SocketTypeOSErrorerrnoECONNABORTEDEPERMZEPROTOZEMFILEZEFAULTZENOBUFSrG   r   rK   r   r   r   r[   )rd   Zfake_server_sockZfake_listen_socklr#   coderP   r&   r&   r'   !test_SocketListener_accept_errors   s2    





,,4rl   c               	      s   t  \} }|  |` |dI d H  |  t| }|dI d H dksPJ |dI d H dkshJ W d    n1 s|0    Y  W d    n1 s0    Y  d S )Nr:   r   r5   )r   r   sendrO   r   r0   )Zsock_aZsock_bstreamr&   r&   r'   5test_socket_stream_works_when_peer_has_already_closed  s    ro   )r   rI   r   r   rg    r   Ztestingr   r   r   Z_highlevel_socketr   r(   r9   r>   rE   rR   rS   rl   ro   r&   r&   r&   r'   <module>   s   &756