B
Žp¾ õV»ã @ 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ÚstopÚwin32Ú 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 )Únew_sock© úD/opt/alt/python37/lib64/python3.7/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 s* t | j¡}| ¡ }t |¡S Q R X d S )N)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 )N)r Zsend_handle)r
r )Únew_fdr
r r 1 s zDupFd.__init__..sendc s t ˆ ¡ d S )N)Ú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 |¡S Q R X d S )N)r r r r Zrecv_handle)r r
r
r
r r 7 s zDupFd.detachN)r r r r r 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 | _g | _t ¡ | _d | _d | _d | _t
| tj¡ d S )Nr )
Ú_keyÚ_cacheÚ
_old_locksÚ threadingÚLockÚ_lockÚ _listenerÚ_addressÚ_threadr Zregister_after_forkr! Ú
_afterfork)r r
r
r r ? s
z_ResourceSharer.__init__c C sN | j > | jd kr| ¡ | jd7 _||f| j| j<