a
XC?h ã @ s² d dl Z d dlZd dlZd dlZd dlZddlmZ ddlmZ ddlm Z dgZ
ejdkrxe
dg7 Z
G d d„ deƒZ
ne
d
g7 Z
G dd
„ d
eƒZG dd
„ d
eƒZeƒ ZejZdS )é Né )Úprocess)Ú reduction)ÚutilÚstopZwin32Ú DupSocketc @ s e Zd Zdd„ Zdd„ ZdS )r c s( | ¡ ‰ ‡ fdd„}t |ˆ j¡| _d S )Nc s ˆ |¡}| |¡ d S ©N)ÚshareZ
send_bytes)ÚconnÚpidr ©Znew_sock© úD/opt/alt/python39/lib64/python3.9/multiprocessing/resource_sharer.pyÚsend s
z DupSocket.__init__..send)ÚdupÚ_resource_sharerÚregisterÚcloseÚ_id)ÚselfZsockr r
r r Ú__init__ s zDupSocket.__init__c C sB t | j¡"}| ¡ }t |¡W d ƒ S 1 s40 Y d S r )r Úget_connectionr Z
recv_bytesÚsocketZ fromshare)r r
r r
r
r Údetach$ s zDupSocket.detachN©Ú__name__Ú
__module__Ú__qualname__r r r
r
r
r r s ÚDupFdc @ s e Zd Zdd„ Zdd„ ZdS )r c s4 t |¡‰ ‡ fdd„}‡ fdd„}t ||¡| _d S )Nc s t | ˆ |¡ d S r )r Zsend_handle)r
r ©Znew_fdr
r r 1 s zDupFd.__init__..sendc s t ˆ ¡ d S r )Úosr r
r r
r r 3 s zDupFd.__init__..close)r r r r r )r Úfdr r r
r r r / s
zDupFd.__init__c C s: t | j¡}t |¡W d ƒ S 1 s,0 Y d S r )r r r r Zrecv_handle)r r
r
r
r r 7 s zDupFd.detachNr r
r
r
r r - s c @ sJ e Zd Zdd„ Zdd„ Zedd„ ƒZddd „Zd
d„ Zdd
„ Z dd„ Z
dS )Ú_ResourceSharerc C s: d| _ i | _t ¡ | _d | _d | _d | _t | t
j¡ d S )Nr )Ú_keyÚ_cacheÚ threadingZLockÚ_lockÚ _listenerÚ_addressÚ_threadr Zregister_after_forkr" Ú
_afterfork)r r
r
r r ? s
z_ResourceSharer.__init__c C sf | j L | jd u r| ¡ | jd7 _||f| j| j<