Ë
    9ài¹  ã                   ó˜   — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZdZdZ	d Z
dZd„ Z G d„ d«      Z G d„ d	ej                  «      Zy)
é    Néç   i   é
   c                 óB   ‡ — t        j                  ‰ «      ˆ fd„«       }|S )Nc                 óJ   •— | j                   rt        d«      ‚ ‰| g|¢­i |¤ŽS )Nz1Can not reuse socket after connection was closed.)Ú_closedÚRuntimeError)ÚselfÚargsÚkwargsÚfs      €ú]/home/factor_ks/STREAMA2026/venv/lib/python3.12/site-packages/docker/transport/npipesocket.pyÚwrappedzcheck_closed.<locals>.wrapped   s1   ø€ à�<Š<ÜØCóð ñ �Ð'˜Ò' Ñ'Ð'ó    )Ú	functoolsÚwraps)r   r   s   ` r   Úcheck_closedr      s%   ø€ Ü‡_�_�QÓó(ó ð(ð €Nr   c                   ó8  — e Zd ZdZdd„Zd„ Zd„ Zd„ Zedd„«       Z	ed„ «       Z
ed	„ «       Zed
„ «       Zd„ Zd„ Zdd„Zd„ Zd„ Zdd„Zedd„«       Zedd„«       Zed d„«       Zedd„«       Zedd„«       Zedd„«       Zed„ «       Zd„ Zd„ Zd„ Zd„ Zed„ «       Zy)!ÚNpipeSocketzï Partial implementation of the socket API over windows named pipes.
        This implementation is only designed to be used as a client socket,
        and server-specific methods (bind, listen, accept...) are not
        implemented.
    Nc                 óJ   — t         j                  | _        || _        d| _        y ©NF)Ú	win32pipeÚNMPWAIT_USE_DEFAULT_WAITÚ_timeoutÚ_handler   )r	   Úhandles     r   Ú__init__zNpipeSocket.__init__$   s   € Ü!×:Ñ:ˆŒØˆŒØˆ�r   c                 ó   — t        «       ‚©N©ÚNotImplementedError©r	   s    r   ÚacceptzNpipeSocket.accept)   ó   € Ü!Ó#Ð#r   c                 ó   — t        «       ‚r   r   ©r	   Úaddresss     r   ÚbindzNpipeSocket.bind,   r#   r   c                 óF   — | j                   j                  «        d| _        y ©NT)r   ÚCloser   r!   s    r   ÚclosezNpipeSocket.close/   s   € Ø�‰×ÑÔØˆ�r   c           	      óø  — 	 t        j                  |t         j                  t         j                  z  dd t         j                  t
        t        z  t         j                  z  d«      }t        j                   |«      d   | _        || _        || _        y # t        j                  $ rT}|j                  t        k(  r:|dz   }|t        k  r,t        j                  d«       | j                  ||«      cY d }~S |‚d }~ww xY w)Nr   é   )Ú	win32fileÚ
CreateFileÚGENERIC_READÚGENERIC_WRITEÚOPEN_EXISTINGÚcSECURITY_ANONYMOUSÚcSECURITY_SQOS_PRESENTÚFILE_FLAG_OVERLAPPEDr   ÚerrorÚwinerrorÚcERROR_PIPE_BUSYÚMAXIMUM_RETRY_COUNTÚtimeÚsleepÚconnectÚGetNamedPipeInfoÚflagsr   Ú_address)r	   r&   Úretry_countr   Úes        r   r<   zNpipeSocket.connect3   sÜ   € ð	Ü×)Ñ)ØÜ×&Ñ&¬×)@Ñ)@Ñ@ØØÜ×'Ñ'Ü$Ü,ñ-ä×4Ñ4ñ5ð ó
ˆFô0 ×/Ñ/°Ó7¸Ñ:ˆŒ
àˆŒØˆ�øô! �‰ò 	ð �z‰zÔ-Ò-ð *¨A™o�ØÔ"5Ò5Ü—J‘J˜q”MØŸ<™<¨°Ó=Õ=ØˆGûð	ús%   ‚A$B ÂC9Â%AC4Ã,C9Ã2C4Ã4C9c                 ó$   — | j                  |«      S r   )r<   r%   s     r   Ú
connect_exzNpipeSocket.connect_exS   s   € à�|‰|˜GÓ$Ð$r   c                 ó(   — d| _         | j                  S r)   )r   r   r!   s    r   ÚdetachzNpipeSocket.detachW   s   € àˆŒØ�|‰|Ðr   c                 ó,   — t        | j                  «      S r   )r   r   r!   s    r   ÚdupzNpipeSocket.dup\   s   € ä˜4Ÿ<™<Ó(Ð(r   c                 ó   — | j                   S r   ©r?   r!   s    r   ÚgetpeernamezNpipeSocket.getpeername`   ó   € Ø�}‰}Ðr   c                 ó   — | j                   S r   rI   r!   s    r   ÚgetsocknamezNpipeSocket.getsocknamec   rK   r   c                 ó   — t        «       ‚r   r   )r	   ÚlevelÚoptnameÚbuflens       r   Ú
getsockoptzNpipeSocket.getsockoptf   r#   r   c                 ó   — t        «       ‚r   r   )r	   ÚcontrolÚoptions      r   ÚioctlzNpipeSocket.ioctli   r#   r   c                 ó   — t        «       ‚r   r   )r	   Úbacklogs     r   ÚlistenzNpipeSocket.listenl   r#   r   c                 ó°   — |j                  d«      dk7  r
t        «       ‚t        | «      }|�|dk  rt        j                  }t        j
                  ||¬«      S )NÚbÚrr   )Úbuffer_size)Ústripr    ÚNpipeFileIOBaseÚioÚDEFAULT_BUFFER_SIZEÚBufferedReader)r	   ÚmodeÚbufsizeÚrawios       r   ÚmakefilezNpipeSocket.makefileo   sN   € Ø�:‰:�c‹?˜cÒ!Ü%Ó'Ð'Ü Ó%ˆØˆ?˜g¨šlÜ×,Ñ,ˆGÜ× Ñ  °GÔ<Ð<r   c                 óL   — t        j                  | j                  |«      \  }}|S r   )r.   ÚReadFiler   )r	   rd   r>   ÚerrÚdatas        r   ÚrecvzNpipeSocket.recvw   s!   € ä×&Ñ& t§|¡|°WÓ=‰	ˆˆTØˆr   c                 óB   — | j                  ||«      }|| j                  fS r   )rk   r?   )r	   rd   r>   rj   s       r   ÚrecvfromzNpipeSocket.recvfrom|   s!   € à�y‰y˜ %Ó(ˆØ�d—m‘mÐ$Ð$r   c                 ó@   — | j                  |||«      | j                  fS r   )Ú	recv_intor?   )r	   ÚbufÚnbytesr>   s       r   Úrecvfrom_intozNpipeSocket.recvfrom_into�   s   € à�~‰~˜c 6¨5Ó1°4·=±=Ð@Ð@r   c                 óJ  — |}t        |t        «      st        |«      }t        j                  d ddd «      }	 t	        j
                  «       }||_        t        j                  | j                  |r|d | n||«      \  }}t        j                  || j                  «      }|t        j                  k(  r%t        j                  | j                  «       t        ‚t        j                  | j                  |d«      t!        j"                  |«       S # t!        j"                  |«       w xY w©NTr   )Ú
isinstanceÚ
memoryviewÚ
win32eventÚCreateEventÚ
pywintypesÚ
OVERLAPPEDÚhEventr.   rh   r   ÚWaitForSingleObjectr   ÚWAIT_TIMEOUTÚCancelIoÚTimeoutErrorÚGetOverlappedResultÚwin32apiÚCloseHandle)	r	   rp   rq   ÚreadbufÚeventÚ
overlappedri   rj   Úwait_results	            r   ro   zNpipeSocket.recv_into…   sè   € àˆÜ˜#œzÔ*Ü  “oˆGä×&Ñ& t¨T°4¸Ó>ˆð	(Ü#×.Ñ.Ó0ˆJØ %ˆJÔÜ!×*Ñ*Ø—‘Ù$*�˜˜Ñ °Øó‰IˆC�ô
 %×8Ñ8¸ÀÇÁÓNˆKØœj×5Ñ5Ò5Ü×"Ñ" 4§<¡<Ô0Ü"Ð"Ü×0Ñ0°·±¸zÈ1ÓMä× Ñ  Õ'øŒH× Ñ  Õ'ús   ·B>D ÄD"c                 óü  — t        j                  d ddd «      }	 t        j                  «       }||_        t        j                  | j                  ||«       t        j                  || j                  «      }|t         j                  k(  r%t        j                  | j                  «       t        ‚t        j                  | j                  |d«      t        j                  |«       S # t        j                  |«       w xY wrt   )rw   rx   ry   rz   r{   r.   Ú	WriteFiler   r|   r   r}   r~   r   r€   r�   r‚   )r	   Ústringr>   r„   r…   r†   s         r   ÚsendzNpipeSocket.sendœ   s¸   € ä×&Ñ& t¨T°4¸Ó>ˆð
	(Ü#×.Ñ.Ó0ˆJØ %ˆJÔÜ×Ñ §¡¨f°jÔAÜ$×8Ñ8¸ÀÇÁÓNˆKØœj×5Ñ5Ò5Ü×"Ñ" 4§<¡<Ô0Ü"Ð"Ü×0Ñ0°·±¸zÈ1ÓMä× Ñ  Õ'øŒH× Ñ  Õ'ús   šB4C$ Ã$C;c                 ó&   — | j                  ||«      S r   )rŠ   )r	   r‰   r>   s      r   ÚsendallzNpipeSocket.sendall«   s   € à�y‰y˜ Ó'Ð'r   c                 óF   — | j                  |«       | j                  |«      S r   )r<   rŠ   )r	   r‰   r&   s      r   ÚsendtozNpipeSocket.sendto¯   s   € à�‰�WÔØ�y‰y˜Ó Ð r   c                 óJ   — |r| j                  d «      S | j                  d«      S )Nr   )Ú
settimeout)r	   Úflags     r   ÚsetblockingzNpipeSocket.setblocking´   s#   € ÙØ—?‘? 4Ó(Ð(Ø�‰˜qÓ!Ð!r   c                 ó¦   — |€t         j                  | _        y t        |t        t
        f«      r|dk  rt        d«      ‚t        |dz  «      | _        y )Nr   zTimeout value out of rangeiè  )rw   ÚINFINITEr   ru   ÚfloatÚintÚ
ValueError)r	   Úvalues     r   r�   zNpipeSocket.settimeout¹   sF   € Øˆ=ä&×/Ñ/ˆD�MÜ˜E¤E¬3 <Ô0°E¸A²IÜÐ9Ó:Ð:ô   ¨¡Ó-ˆD�Mr   c                 ó   — | j                   S r   )r   r!   s    r   Ú
gettimeoutzNpipeSocket.gettimeoutÃ   rK   r   c                 ó   — t        «       ‚r   r   )r	   rO   rP   r˜   s       r   Ú
setsockoptzNpipeSocket.setsockoptÆ   r#   r   c                 ó"   — | j                  «       S r   )r+   )r	   Úhows     r   ÚshutdownzNpipeSocket.shutdownÉ   s   € à�z‰z‹|Ðr   r   )r   )NN)r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r"   r'   r+   r   r<   rC   rE   rG   rJ   rM   rR   rV   rY   rf   rk   rm   rr   ro   rŠ   rŒ   rŽ   r’   r�   rš   rœ   rŸ   © r   r   r   r      s?  „ ñóò
$ò$òð ò ó ð ð> ñ%ó ð%ð ñó ðð ñ)ó ð)òòó$ò$ò$ó=ð òó ðð ò%ó ð%ð òAó ðAð ò(ó ð(ð, ò(ó ð(ð ò(ó ð(ð ñ!ó ð!ò"ò
.òò$ð ñó ñr   r   c                   óH   ‡ — e Zd Zd„ Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
ˆ xZS )	r_   c                 ó   — || _         y r   )Úsock)r	   Únpipe_sockets     r   r   zNpipeFileIOBase.__init__Ï   s	   € Ø ˆ�	r   c                 ó0   •— t         ‰| �  «        d | _        y r   )Úsuperr+   r§   )r	   Ú	__class__s    €r   r+   zNpipeFileIOBase.closeÒ   s   ø€ Ü‰‰ŒØˆ�	r   c                 ó6   — | j                   j                  «       S r   )r§   Úfilenor!   s    r   r­   zNpipeFileIOBase.filenoÖ   s   € Ø�y‰y×ÑÓ!Ð!r   c                  ó   — yr   r¤   r!   s    r   ÚisattyzNpipeFileIOBase.isattyÙ   ó   € Ør   c                  ó   — yr)   r¤   r!   s    r   ÚreadablezNpipeFileIOBase.readableÜ   s   € Ør   c                 ó8   — | j                   j                  |«      S r   )r§   ro   )r	   rp   s     r   ÚreadintozNpipeFileIOBase.readintoß   s   € Ø�y‰y×"Ñ" 3Ó'Ð'r   c                  ó   — yr   r¤   r!   s    r   ÚseekablezNpipeFileIOBase.seekableâ   r°   r   c                  ó   — yr   r¤   r!   s    r   ÚwritablezNpipeFileIOBase.writableå   r°   r   )r    r¡   r¢   r   r+   r­   r¯   r²   r´   r¶   r¸   Ú__classcell__)r«   s   @r   r_   r_   Î   s+   ø„ ò!ôò"òòò(òör   r_   )r   r`   r:   ry   r�   rw   r.   r   r8   r4   r3   r9   r   r   Ú	RawIOBaser_   r¤   r   r   ú<module>r»      sW   ðÛ Û 	Û ã Û Û Û Û àÐ Ø!Ð ØÐ àÐ ò÷nñ nôb�b—l‘lõ r   