3
2a @ s d dl Z d dlZd dlZd dlZd dlZddlmZ ddlmZ ddlm Z dgZ
ejdkrxe
dg7 Z
G d d deZ
ne
d
g7 Z
G dd
d
eZG dd
d
eZe ZejZdS ) N )process) reduction)utilstopwin32 DupSocketc @ s e Zd Zdd Zdd ZdS )r c s( |j fdd}tj| j| _d S )Nc s j |}| j| d S )N)shareZ
send_bytes)connpidr )new_sock 4/opt/alt/python36/lib64/python3.6/resource_sharer.pysend s
z DupSocket.__init__..send)dup_resource_sharerregisterclose_id)selfZsockr r
)r r __init__ s zDupSocket.__init__c C s* t j| j}|j }tj|S Q R X d S )N)r get_connectionr Z
recv_bytessocketZ 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 j| fdd} fdd}tj||| _d S )Nc s t j| | d S )N)r Zsend_handle)r
r )new_fdr
r r 1 s zDupFd.__init__..sendc s t j 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| j}tj|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 | _tj | _d | _d | _d | _t j
| tj d S )Nr )
_key_cache
_old_locks threadingLock_lock _listener_address_threadr Zregister_after_forkr!
_afterfork)r r
r
r r ? s
z_ResourceSharer.__init__c
C sN | j > | jd kr| j | jd7 _||f| j| j<