Ë
    _§1h…=  ã                  óº  — 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mZ dZej4                  ej6                  hZedd„«       Ze G d„ de«      «       Zg d¢Z e «       Z!de"d<   eD ]+  Z# ee$«      5  e!jK                   e&ee#«      «       ddd«       Œ- e G d„ dee   «      «       Z'y# 1 sw Y   ŒKxY w)é    )ÚannotationsN)ÚcontextmanagerÚsuppress)ÚTYPE_CHECKINGÚoverloadé   )Úsocket)ÚConflictDetectorÚfinal)ÚHalfCloseableStreamÚListener)Ú	Generator)ÚBuffer)Ú
SocketTypei   c               #  óº   K  — 	 d –— y # t         $ rF} | j                  t        v rt        j                  d«      d ‚t        j
                  d| › �«      | ‚d } ~ ww xY w­w)Nzthis socket was already closedzsocket connection broken: )ÚOSErrorÚerrnoÚ_closed_stream_errnosÚtrioÚClosedResourceErrorÚBrokenResourceError)Úexcs    úT/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/trio/_highlevel_socket.pyÚ)_translate_socket_errors_to_stream_errorsr   #   s^   è ø€ ðXÜøÜò XØ�9‰9Ô-Ñ-Ü×*Ñ*Ð+KÓLÐRVÐVä×*Ñ*Ð-GÈÀuÐ+MÓNÐTWÐWûð	Xüs%   ‚A„	 ˆA‰	A’A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y)Ú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.

    c                ó:  — t        |t        j                  «      st        d«      ‚|j                  t        j
                  k7  rt        d«      ‚|| _        t        d«      | _	        t        t        «      5  | j                  t        j                  t        j                  d«       d d d «       t        t        d«      rHt        t        «      5  | j                  t        j                  t        j                   d«       d d d «       y y # 1 sw Y   ŒbxY w# 1 sw Y   y xY w)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__G   sê   € Ü˜&¤'×"4Ñ"4Ô5ÜÐHÓIÐIØ�;‰;œ'×-Ñ-Ò-ÜÐIÓJÐJàˆŒÜ'7ØIó(
ˆÔ$ô ”gÓñ 	LØ�O‰OœG×/Ñ/´×1DÑ1DÀdÔK÷	Lô ”7Ð/Ô0ô œ'Ó"ñ WØ—‘¤× 3Ñ 3´W×5NÑ5NÐPUÔV÷Wð Wð 1÷	Lð 	Lú÷Wð Wús   Á40DÃ0DÄDÄDc           	   ƒ  óÔ  K  — | j                   j                  rt        j                  d«      ‚| j                  5  t        «       5  t        |«      5 }|sr| j                   j                  «       dk(  rt        j                  d«      ‚t        j                  j                  «       ƒ d {  –—†  	 d d d «       d d d «       d d d «       y d}|t        |«      k  rE||d  5 }| j                   j                  |«      ƒ d {  –—† }d d d «       |z  }|t        |«      k  rŒEd d d «       d d d «       d d d «       y 7 ŒŒ7 Œ;# 1 sw Y   Œ:xY w# 1 sw Y   Œ*xY w# 1 sw Y   Œ.xY w# 1 sw Y   y xY w­w)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*   ÚdataÚ
total_sentÚ	remainingÚsents        r   Úsend_allzSocketStream.send_alle   sL  è ø€ Ø�;‰;×+Ò+Ü×*Ñ*Ð+NÓOÐOØ×)Ñ)ñ 	+Ü:Ó<ñ +Ü Ó%ð 
+¨ÙØŸ;™;×-Ñ-Ó/°2Ò5Ü"&×":Ñ":Ð;VÓ"WÐWÜ"Ÿm™m×6Ñ6Ó8×8Ð8Ø÷
+÷+÷	+ð 	+ð "#�JØ$¤s¨4£yÒ0Ø! * +Ð.ð E°)Ø)-¯©×)9Ñ)9¸)Ó)D×#D˜D÷Eà" dÑ*˜
ð %¤s¨4£yÓ0÷
+÷+÷	+ð 	+ð 9øð
 $Eø÷Eð Eú÷
+ð 
+ú÷+ð +ú÷	+ð 	+üs¡   ‚8E(ºEÁEÁAEÂ'D4
Â(EÂ-EÂ5EÂ=	E(ÃEÃD8	Ã:D6Ã;D8	Ã?EÄEÄ#EÄ+	E(Ä4EÄ6D8	Ä8EÄ=EÅEÅ	EÅE	ÅEÅE%Å!E(c              ƒ  ó.  K  — | j                   5  | j                  j                  «       dk(  rt        j                  ‚t        «       5  | j                  j                  «       ƒ d {  –—†  d d d «       d d d «       y 7 Œ# 1 sw Y   ŒxY w# 1 sw Y   y xY w­w)Nr-   )r%   r	   r0   r   r   r   Úwait_writable©r*   s    r   Úwait_send_all_might_not_blockz*SocketStream.wait_send_all_might_not_blockv   s€   è ø€ Ø×)Ñ)ñ 	2Ø�{‰{×!Ñ!Ó# rÒ)Ü×.Ñ.Ð.Ü:Ó<ñ 2Ø—k‘k×/Ñ/Ó1×1Ð1÷2÷	2ð 	2ð 2ø÷2ð 2ú÷	2ð 	2üsF   ‚B�8B	ÁA=Á%A;Á&A=Á*B	Á2	BÁ;A=Á=B	ÂB	Â	BÂBc              ƒ  ón  K  — | j                   5  t        j                  j                  «       ƒ d {  –—†  | j                  j
                  r
	 d d d «       y t        «       5  | j                  j                  t        j                  «       d d d «       d d d «       y 7 Œi# 1 sw Y   ŒxY w# 1 sw Y   y xY w­w©N)
r%   r   r1   r2   r	   r.   r   Úshutdownr    ÚSHUT_WRr<   s    r   Úsend_eofzSocketStream.send_eof}   s‘   è ø€ Ø×)Ñ)ñ 	6Ü—-‘-×*Ñ*Ó,×,Ð,ð �{‰{×/Ò/Ø÷	6ð 	6ô ;Ó<ñ 6Ø—‘×$Ñ$¤W§_¡_Ô5÷6÷	6ð 	6Ø,ø÷
6ð 6ú÷	6ð 	6üsP   ‚B5�"B)±B²B)Á	B5Á
B)Á *BÂ
B)Â	B5ÂB)ÂB&	Â"B)Â)B2Â.B5Nc              ƒ  óÄ   K  — |€t         }|dk  rt        d«      ‚t        «       5  | j                  j	                  |«      ƒ d {  –—† cd d d «       S 7 Œ# 1 sw Y   y xY w­w)Nr   zmax_bytes must be >= 1)ÚDEFAULT_RECEIVE_SIZEr$   r   r	   Úrecv)r*   Ú	max_bytess     r   Úreceive_somezSocketStream.receive_some‡   s\   è ø€ ØÐÜ,ˆIØ�qŠ=ÜÐ5Ó6Ð6Ü6Ó8ñ 	5ØŸ™×)Ñ)¨)Ó4×4÷	5ñ 	5Ø4ø÷	5ð 	5üs.   ‚#A ¥AÁAÁAÁ
A ÁAÁAÁA c              ƒ  ó�   K  — | j                   j                  «        t        j                  j	                  «       ƒ d {  –—†  y 7 Œ­wr?   ©r	   Úcloser   r1   r2   r<   s    r   ÚaclosezSocketStream.aclose�   s,   è ø€ Ø�‰×ÑÔÜ�m‰m×&Ñ&Ó(×(Ò(úó   ‚<A¾A¿Ac                 ó   — y r?   © )r*   ÚlevelÚoptionÚvalues       r   r&   zSocketStream.setsockopt•   s   € ØPSó    c                 ó   — y r?   rN   ©r*   rO   rP   rQ   Úlengths        r   r&   zSocketStream.setsockopt˜   s   € ØUXrR   c                ó¸   — |€*|€t        d«      ‚| j                  j                  |||«      S |�t        d|›d�«      ‚| j                  j                  ||||«      S )zlSet an option on the underlying socket.

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

        zKinvalid 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&   rT   s        r   r&   zSocketStream.setsockopt›   sv   € ð ˆ>Øˆ}ÜØaóð ð —;‘;×)Ñ)¨%°¸Ó?Ð?ØÐÜØ6°u°iÐ?dÐeóð ð �{‰{×%Ñ% e¨V°U¸FÓCÐCrR   c                 ó   — y r?   rN   )r*   rO   rP   s      r   Ú
getsockoptzSocketStream.getsockopt³   s   € Ø:=rR   c                 ó   — y r?   rN   ©r*   rO   rP   Ú
buffersizes       r   rX   zSocketStream.getsockopt¶   s   € ØMPrR   c                ó~   — |dk(  r| j                   j                  ||«      S | j                   j                  |||«      S )zƒCheck the current value of an option on the underlying socket.

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

        r   )r	   rX   rZ   s       r   rX   zSocketStream.getsockopt¹   s;   € ð ˜Š?Ø—;‘;×)Ñ)¨%°Ó8Ð8à—;‘;×)Ñ)¨%°¸ÓDÐDrR   ©r	   r   ÚreturnÚNone)r5   zbytes | bytearray | memoryviewr^   r_   ©r^   r_   r?   )rF   ú
int | Noner^   Úbytes)rO   ÚintrP   rc   rQ   zint | Bufferr^   r_   )
rO   rc   rP   rc   rQ   r_   rU   rc   r^   r_   )
rO   rc   rP   rc   rQ   zint | Buffer | NonerU   ra   r^   r_   )rO   rc   rP   rc   r^   rc   )rO   rc   rP   rc   r[   rc   r^   rb   )r   )rO   rc   rP   rc   r[   rc   r^   zint | bytes)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r+   r9   r=   rB   rG   rK   r   r&   rX   rN   rR   r   r   r   .   s¨   „ ñó.Wó<+ó"2ó6ô5ó)ð ÚSó ØSàÚXó ØXð "ðDàðDð ðDð #ð	Dð
 ðDð 
óDð0 Ú=ó Ø=àÚPó ØPõErR   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y)	Ú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.

    c                óP  — t        |t        j                  «      st        d«      ‚|j                  t        j
                  k7  rt        d«      ‚	 |j                  t        j                  t        j                  «      }|st        d«      ‚|| _        y # t        $ r
 Y || _        y w xY w)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$   rX   Ú
SOL_SOCKETÚSO_ACCEPTCONNr   r	   )r*   r	   Ú	listenings      r   r+   zSocketListener.__init__o  s•   € Ü˜&¤'×"4Ñ"4Ô5ÜÐJÓKÐKØ�;‰;œ'×-Ñ-Ò-ÜÐKÓLÐLð	OØ×)Ñ)¬'×*<Ñ*<¼g×>SÑ>SÓTˆIñ
 Ü Ð!MÓNÐNàˆ�øô ò 	àð
 ˆ�ð	ús   Á.B Â	B%Â$B%c              ƒ  ó  K  — 	 	 | j                   j                  «       ƒ d{  –—† \  }}t        |«      S 7 Œ# t        $ r@}|j                  t
        v rt        j                  d‚|j                  t        vr‚ Y d}~nd}~ww xY wŒ€­w)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``.

        N)	r	   Úacceptr   r   r   r   r   r   rw   )r*   ÚsockÚ_r   s       r   r   zSocketListener.accept  s€   è ø€ ð" ð*Ø $§¡× 2Ñ 2Ó 4×4‘��aô $ DÓ)Ð)ð 5ùÜò Ø—9‘9Ô 5Ñ5Ü×2Ñ2¸Ð<Ø—9‘9Ô$<Ñ<Øô =ûðúð ùs7   ‚B…7 ¢5£7 ªBµ7 ·	B Á 6A;Á6BÁ;B Â Bc              ƒ  ó�   K  — | j                   j                  «        t        j                  j	                  «       ƒ d{  –—†  y7 Œ­w)z.Close this listener and its underlying socket.NrI   r<   s    r   rK   zSocketListener.aclose›  s,   è ø€ à�‰×ÑÔÜ�m‰m×&Ñ&Ó(×(Ò(úrL   Nr]   )r^   r   r`   )rd   re   rf   rg   r+   r   rK   rN   rR   r   ry   ry   ]  s   „ ñó ó *ô8)rR   ry   )r^   zGenerator[None, None, None])(Ú
__future__r   r   Ú
contextlibr   r   Útypingr   r   r   Ú r	   r    Ú_utilr
   r   Úabcr   r   Úcollections.abcr   Útyping_extensionsr   Ú_socketr   rD   ÚEBADFÚENOTSOCKr   r   r   Ú_ignorable_accept_errno_namesÚsetrw   Ú__annotations__ÚnameÚAttributeErrorÚaddÚgetattrry   rN   rR   r   ú<module>r•      s  ðæ "ã ß /ß *ã å ß *ß .áÝ)å(å#ð Ð ð 
‡K�Kà	‡N�Nð	Ð ð òXó ðXð ôVEÐ&ó VEó ðVEòb!Ð ñ. &)£UÐ ˜(Ó *Ø)ò ;€DÙ	�.Ó	!ñ ;Ø ×$Ñ$¡W¨U°DÓ%9Ô:÷;ð ;ð;ð
 ô@)�X˜lÑ+ó @)ó ñ@)÷;ð ;ús   ÂCÃC	