§
    ¯õiÈ>  ã                  ó  — U d dl mZ d dlZd dlmZmZ d dlmZmZ d dl	Z	ddl
mZ ddlmZmZ ddlmZmZ erd d	lmZ dd
lmZ d dlZej        dk    rd dlmZ nerd dlmZ dZej        ej        hZedd„¦   «         Ze G d„ de¦  «        ¦   «         Z g d¢Z! e"¦   «         Z#de$d<   e!D ]DZ% ee&¦  «        5  e# '                     e(ee%¦  «        ¦  «         ddd¦  «         n# 1 swxY w Y   ŒEe G d„ dee          ¦  «        ¦   «         Z)dS )é    )ÚannotationsN)ÚcontextmanagerÚsuppress)ÚTYPE_CHECKINGÚoverloadé   )Úsocket)ÚConflictDetectorÚfinal)ÚHalfCloseableStreamÚListener)Ú	Generator)Ú
SocketType)é   é   )ÚBufferi   ÚreturnúGenerator[None, None, None]c               #  ó®   K  — 	 d V — d S # t           $ r@} | j        t          v rt          j        d¦  «        d ‚t          j        d| › �¦  «        | ‚d } ~ ww xY w)Nzthis socket was already closedzsocket connection broken: )ÚOSErrorÚerrnoÚ_closed_stream_errnosÚtrioÚClosedResourceErrorÚBrokenResourceError)Úexcs    úb/var/www/html/nodeJS/PythonScripts/venv3.11/lib/python3.11/site-packages/trio/_highlevel_socket.pyÚ)_translate_socket_errors_to_stream_errorsr   +   s|   è è € ðXØˆˆˆˆˆøÝð Xð Xð XØŒ9Õ-Ð-Ð-ÝÔ*Ð+KÑLÔLÐRVÐVåÔ*Ð+MÈÐ+MÐ+MÑNÔNÐTWÐWøøøøð	Xøøøs   „
 Š
A”;AÁAc                  óº   — e Zd ZdZd"d„Zd#d	„Zd$d
„Zd$d„Zd%d&d„Zd$d„Z	e
d'd„¦   «         Ze
d(d„¦   «         Z	 d%d)d„Ze
d*d„¦   «         Ze
d+d„¦   «         Zd,d-d!„ZdS ).ÚSocketStreamuf  An implementation of the :class:`trio.abc.HalfCloseableStream`
    interface based on a raw network socket.

    Args:
      socket: The Trio socket object to wrap. Must have type ``SOCK_STREAM``,
          and be connected.

    By default for TCP sockets, :class:`SocketStream` enables ``TCP_NODELAY``,
    and (on platforms where it's supported) enables ``TCP_NOTSENT_LOWAT`` with
    a reasonable buffer size (currently 16 KiB) â€“ see `issue #72
    <https://github.com/python-trio/trio/issues/72>`__ for discussion. You can
    of course override these defaults by calling :meth:`setsockopt`.

    Once a :class:`SocketStream` object is constructed, it implements the full
    :class:`trio.abc.HalfCloseableStream` interface. In addition, it provides
    a few extra features:

    .. attribute:: socket

       The Trio socket object that this stream wraps.

    r	   r   r   ÚNonec                ób  — t          |t          j        ¦  «        st          d¦  «        ‚|j        t          j        k    rt          d¦  «        ‚|| _        t          d¦  «        | _	        t          t          ¦  «        5  |                      t          j        t          j        d¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          d¦  «        rZt          t          ¦  «        5  |                      t          j        t          j        d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S d S )Nz*SocketStream requires a Trio socket objectz*SocketStream requires a SOCK_STREAM socketz;another task is currently sending data on this SocketStreamTÚTCP_NOTSENT_LOWATi @  )Ú
isinstanceÚtsocketr   Ú	TypeErrorÚtypeÚSOCK_STREAMÚ
ValueErrorr	   r
   Ú_send_conflict_detectorr   r   Ú
setsockoptÚIPPROTO_TCPÚTCP_NODELAYÚhasattrr#   )Úselfr	   s     r   Ú__init__zSocketStream.__init__O   s»  € Ý˜&¥'Ô"4Ñ5Ô5ð 	JÝÐHÑIÔIÐIØŒ;�'Ô-Ò-Ð-ÝÐIÑJÔJÐJàˆŒÝ'7ØIñ(
ô (
ˆÔ$õ •gÑÔð 	Lð 	LØ�OŠO�GÔ/µÔ1DÀdÑKÔKÐKð	Lð 	Lð 	Lñ 	Lô 	Lð 	Lð 	Lð 	Lð 	Lð 	Lð 	Løøøð 	Lð 	Lð 	Lð 	Lõ •7Ð/Ñ0Ô0ð 	Wõ �'Ñ"Ô"ð Wð WØ—’¥Ô 3µWÔ5NÐPUÑVÔVÐVðWð Wð Wñ Wô Wð Wð Wð Wð Wð Wð Wð Wøøøð Wð Wð Wð Wð Wð Wð	Wð 	Ws$   Á=,B5Â5B9Â<B9Ã),D"Ä"D&Ä)D&Údataúbytes | bytearray | memoryviewc           	   ƒ  óø  K  — | j         j        rt          j        d¦  «        ‚| j        5  t          ¦   «         5  t          |¦  «        5 }|sy| j                              ¦   «         dk    rt          j        d¦  «        ‚t          j         	                    ¦   «         ƒ d {V —† 	 d d d ¦  «         d d d ¦  «         d d d ¦  «         d S d}|t          |¦  «        k     rZ||d …         5 }| j                              |¦  «        ƒ d {V —†}d d d ¦  «         n# 1 swxY w Y   ||z  }|t          |¦  «        k     °Zd d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )Nz!can't send data after sending EOFéÿÿÿÿzsocket was already closedr   )r	   Údid_shutdown_SHUT_WRr   r   r*   r   Ú
memoryviewÚfilenoÚlowlevelÚ
checkpointÚlenÚsend)r/   r1   Ú
total_sentÚ	remainingÚsents        r   Úsend_allzSocketStream.send_allm   sá  è è € ØŒ;Ô+ð 	PÝÔ*Ð+NÑOÔOÐOØÔ)ð 	+ð 	+Ý:Ñ<Ô<ð +ð +Ý Ñ%Ô%ð 
+¨Øð Øœ;×-Ò-Ñ/Ô/°2Ò5Ð5Ý"&Ô":Ð;VÑ"WÔ"WÐWÝ"œm×6Ò6Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Øð
+ð 
+ð 
+ñ 
+ô 
+ð 
+ð+ð +ð +ñ +ô +ð +ð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð "#�JØ$¥s¨4¡y¤yÒ0Ð0Ø! * + +Ô.ð E°)Ø)-¬×)9Ò)9¸)Ñ)DÔ)DÐ#DÐ#DÐ#DÐ#DÐ#DÐ#D˜DðEð Eð Eñ Eô Eð Eð Eð Eð Eð Eð Eøøøð Eð Eð Eð Eà" dÑ*˜
ð %¥s¨4¡y¤yÒ0Ð0ð
+ð 
+ð 
+ñ 
+ô 
+ð 
+ð 
+ð 
+ð 
+ð 
+ð 
+øøøð 
+ð 
+ð 
+ð 
+ð+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +ð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+ð 	+ð 	+s�   ªE/¹EÁ	AE Â"EÂ-E/ÃE Ã$!D	ÄE ÄDÄE ÄDÄE Ä4EÅ EÅEÅEÅEÅE/ÅE	ÅE/ÅE	ÅE/Å/E3Å6E3c              ƒ  ó&  K  — | j         5  | j                             ¦   «         dk    rt          j        ‚t          ¦   «         5  | j                             ¦   «         ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )Nr4   )r*   r	   r7   r   r   r   Úwait_writable©r/   s    r   Úwait_send_all_might_not_blockz*SocketStream.wait_send_all_might_not_block~   s  è è € ØÔ)ð 	2ð 	2ØŒ{×!Ò!Ñ#Ô# rÒ)Ð)ÝÔ.Ð.Ý:Ñ<Ô<ð 2ð 2Ø”k×/Ò/Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1ð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2ð	2ð 	2ð 	2ñ 	2ô 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2øøøð 	2ð 	2ð 	2ð 	2ð 	2ð 	2s5   Š8BÁ A.Á"BÁ.A2	Á2BÁ5A2	Á6BÂB
ÂB
c              ƒ  óZ  K  — | j         5  t          j                             ¦   «         ƒ d {V —† | j        j        r	 d d d ¦  «         d S t          ¦   «         5  | j                             t          j	        ¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S ©N)
r*   r   r8   r9   r	   r5   r   Úshutdownr%   ÚSHUT_WRrB   s    r   Úsend_eofzSocketStream.send_eof…   sN  è è € ØÔ)ð 	6ð 	6Ý”-×*Ò*Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,ð Œ{Ô/ð Øð	6ð 	6ð 	6ñ 	6ô 	6ð 	6ð 	6ð 	6õ ;Ñ<Ô<ð 6ð 6Ø”×$Ò$¥W¤_Ñ5Ô5Ð5ð6ð 6ð 6ñ 6ô 6ð 6ð 6ð 6ð 6ð 6ð 6øøøð 6ð 6ð 6ð 6ð	6ð 	6ð 	6ñ 	6ô 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6øøøð 	6ð 	6ð 	6ð 	6ð 	6ð 	6s;   Š2B Á	B Á%BÁ<B ÂB	ÂB ÂB	ÂB Â B$Â'B$NÚ	max_bytesú
int | NoneÚbytesc              ƒ  óÒ   K  — |€t           }|dk     rt          d¦  «        ‚t          ¦   «         5  | j                             |¦  «        ƒ d {V —†cd d d ¦  «         S # 1 swxY w Y   d S )Nr   zmax_bytes must be >= 1)ÚDEFAULT_RECEIVE_SIZEr)   r   r	   Úrecv)r/   rI   s     r   Úreceive_somezSocketStream.receive_some�   s¾   è è € ØÐÝ,ˆIØ�qŠ=ˆ=ÝÐ5Ñ6Ô6Ð6Ý6Ñ8Ô8ð 	5ð 	5Øœ×)Ò)¨)Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4ð	5ð 	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5ð 	5ð 	5s   ¯ AÁA Á#A c              ƒ  ó„   K  — | j                              ¦   «          t          j                             ¦   «         ƒ d {V —† d S rE   ©r	   Úcloser   r8   r9   rB   s    r   ÚaclosezSocketStream.aclose—   sF   è è € ØŒ×ÒÑÔÐÝŒm×&Ò&Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ó    ÚlevelÚintÚoptionÚvalueúint | Bufferc                ó   — d S rE   © )r/   rU   rW   rX   s       r   r+   zSocketStream.setsockopt�   s   € ØPSÐPSrT   Úlengthc                ó   — d S rE   r[   ©r/   rU   rW   rX   r\   s        r   r+   zSocketStream.setsockopt    s   € ØUXÐUXrT   úint | Buffer | Nonec                óÄ   — |€-|€t          d¦  «        ‚| j                             |||¦  «        S |�t          d|›d�¦  «        ‚| j                             ||||¦  «        S )zlSet an option on the underlying socket.

        See :meth:`socket.socket.setsockopt` for details.

        NzKinvalid value for argument 'value', must not be None when specifying lengthz$invalid value for argument 'value': z%, must be None when specifying optlen)r&   r	   r+   r^   s        r   r+   zSocketStream.setsockopt¤   sƒ   € ð ˆ>Øˆ}ÝØañô ð ð ”;×)Ò)¨%°¸Ñ?Ô?Ð?ØÐÝØe°uÐeÐeÐeñô ð ð Œ{×%Ò% e¨V°U¸FÑCÔCÐCrT   c                ó   — d S rE   r[   )r/   rU   rW   s      r   Ú
getsockoptzSocketStream.getsockopt¼   s   € Ø:=¸#rT   Ú
buffersizec                ó   — d S rE   r[   ©r/   rU   rW   rc   s       r   rb   zSocketStream.getsockopt¿   s   € ØMPÈSrT   r   úint | bytesc                ó|   — |dk    r| j                              ||¦  «        S | j                              |||¦  «        S )zƒCheck the current value of an option on the underlying socket.

        See :meth:`socket.socket.getsockopt` for details.

        r   )r	   rb   re   s       r   rb   zSocketStream.getsockoptÂ   s?   € ð ˜Š?ˆ?Ø”;×)Ò)¨%°Ñ8Ô8Ð8à”;×)Ò)¨%°¸ÑDÔDÐDrT   ©r	   r   r   r!   )r1   r2   r   r!   ©r   r!   rE   )rI   rJ   r   rK   )rU   rV   rW   rV   rX   rY   r   r!   )
rU   rV   rW   rV   rX   r!   r\   rV   r   r!   )
rU   rV   rW   rV   rX   r_   r\   rJ   r   r!   )rU   rV   rW   rV   r   rV   )rU   rV   rW   rV   rc   rV   r   rK   )r   )rU   rV   rW   rV   rc   rV   r   rf   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r0   r?   rC   rH   rO   rS   r   r+   rb   r[   rT   r   r    r    6   s>  € € € € € ðð ð.Wð Wð Wð Wð<+ð +ð +ð +ð"2ð 2ð 2ð 2ð6ð 6ð 6ð 6ð5ð 5ð 5ð 5ð 5ð)ð )ð )ð )ð ØSÐSÐSñ „XØSàØXÐXÐXñ „XØXð "ðDð Dð Dð Dð Dð0 Ø=Ð=Ð=ñ „XØ=àØPÐPÐPñ „XØPðEð Eð Eð Eð Eð Eð ErT   r    )ÚEPERMÚECONNABORTEDÚEPROTOÚENETDOWNÚENOPROTOOPTÚ	EHOSTDOWNÚENONETÚEHOSTUNREACHÚ
EOPNOTSUPPÚENETUNREACHÚENOSRÚESOCKTNOSUPPORTÚEPROTONOSUPPORTÚ	ETIMEDOUTÚ
ECONNRESETzset[int]Ú_ignorable_accept_errnosc                  ó*   — e Zd ZdZdd„Zdd„Zdd	„Zd
S )ÚSocketListeneraâ  A :class:`~trio.abc.Listener` that uses a listening socket to accept
    incoming connections as :class:`SocketStream` objects.

    Args:
      socket: The Trio socket object to wrap. Must have type ``SOCK_STREAM``,
          and be listening.

    Note that the :class:`SocketListener` "takes ownership" of the given
    socket; closing the :class:`SocketListener` will also close the socket.

    .. attribute:: socket

       The Trio socket object that this stream wraps.

    r	   r   r   r!   c                óH  — t          |t          j        ¦  «        st          d¦  «        ‚|j        t          j        k    rt          d¦  «        ‚	 |                     t          j        t          j	        ¦  «        }|st          d¦  «        ‚n# t          $ r Y nw xY w|| _        d S )Nz,SocketListener requires a Trio socket objectz,SocketListener requires a SOCK_STREAM socketz*SocketListener requires a listening socket)r$   r%   r   r&   r'   r(   r)   rb   Ú
SOL_SOCKETÚSO_ACCEPTCONNr   r	   )r/   r	   Ú	listenings      r   r0   zSocketListener.__init__x  s¶   € Ý˜&¥'Ô"4Ñ5Ô5ð 	LÝÐJÑKÔKÐKØŒ;�'Ô-Ò-Ð-ÝÐKÑLÔLÐLð	OØ×)Ò)­'Ô*<½gÔ>SÑTÔTˆIð
 ð OÝ Ð!MÑNÔNÐNðOøõ	 ð 	ð 	ð 	àˆDð	øøøð ˆŒˆˆs   Á*B Â
BÂBr    c              ƒ  óð   K  — 	 	 | j                              ¦   «         ƒ d{V —†\  }}t          |¦  «        S # t          $ r4}|j        t
          v rt          j        d‚|j        t          vr‚ Y d}~nd}~ww xY wŒt)a#  Accept an incoming connection.

        Returns:
          :class:`SocketStream`

        Raises:
          OSError: if the underlying call to ``accept`` raises an unexpected
              error.
          ClosedResourceError: if you already closed the socket.

        This method handles routine errors like ``ECONNABORTED``, but passes
        other errors on to its caller. In particular, it does *not* make any
        special effort to handle resource exhaustion errors like ``EMFILE``,
        ``ENFILE``, ``ENOBUFS``, ``ENOMEM``.

        TN)	r	   Úacceptr    r   r   r   r   r   r}   )r/   ÚsockÚ_r   s       r   r…   zSocketListener.acceptˆ  sª   è è € ð"		*ð*Ø $¤× 2Ò 2Ñ 4Ô 4Ð4Ð4Ð4Ð4Ð4Ð4‘��aõ $ DÑ)Ô)Ð)øõ ð ð ð Ø”9Õ 5Ð5Ð5ÝÔ2¸Ð<Ø”9Õ$<Ð<Ð<Øð =Ð<Ð<Ð<Ð<øøøøðøøøð		*s   …"6 ¶
A4Á *A/Á/A4c              ƒ  ó„   K  — | j                              ¦   «          t          j                             ¦   «         ƒ d{V —† dS )z.Close this listener and its underlying socket.NrQ   rB   s    r   rS   zSocketListener.aclose¤  sF   è è € àŒ×ÒÑÔÐÝŒm×&Ò&Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(rT   Nrh   )r   r    ri   )rj   rk   rl   rm   r0   r…   rS   r[   rT   r   r   r   f  sZ   € € € € € ðð ð ð ð ð ð *ð *ð *ð *ð8)ð )ð )ð )ð )ð )rT   r   )r   r   )*Ú
__future__r   r   Ú
contextlibr   r   Útypingr   r   r   Ú r	   r%   Ú_utilr
   r   Úabcr   r   Úcollections.abcr   Ú_socketr   ÚsysÚversion_infor   Útyping_extensionsrM   ÚEBADFÚENOTSOCKr   r   r    Ú_ignorable_accept_errno_namesÚsetr}   Ú__annotations__ÚnameÚAttributeErrorÚaddÚgetattrr   r[   rT   r   ú<module>r�      sª  ðà "Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *à €€€à Ð Ð Ð Ð Ð Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .àð $Ø)Ð)Ð)Ð)Ð)Ð)à#Ð#Ð#Ð#Ð#Ð#à 
€
€
€
àÔ�wÒÐð 'Ð&Ð&Ð&Ð&Ð&Ð&Øð )Ø(Ð(Ð(Ð(Ð(Ð(ð Ð ð 
„Kà	„Nð	Ð ð ðXð Xð Xñ „ðXð ðWEð WEð WEð WEð WEÐ&ñ WEô WEñ „ðWEðd!ð !ð !Ð ð. &) S¡U¤UÐ Ð *Ð *Ð *Ñ *Ø)ð ;ð ;€DØ	ˆ�.Ñ	!Ô	!ð ;ð ;Ø ×$Ò$ W W¨U°DÑ%9Ô%9Ñ:Ô:Ð:ð;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;øð ð@)ð @)ð @)ð @)ð @)�X˜lÔ+ñ @)ô @)ñ „ð@)ð @)ð @)s   Â6 C"Ã"C&	Ã)C&	