e f @ s d d l Z d d l Z d d l Z d d l Z d d l Z d d l m Z d d l m Z d d l m Z d g Z e j
d k r e d g 7Z Gd d d e Z n# e d
g 7Z Gd d
d
e Z
Gd d
d
e Z e Z e j Z d S) N )process) reduction)utilstopwin32 DupSocketc @ s. e Z d Z d Z d d Z d d Z d S)r zPicklable wrapper for a socket.c s: | j f d d } t j | j | _ d S)Nc s j | } | j | d S)N)shareZ
send_bytes)connpidr )new_sock D/opt/alt/python34/lib64/python3.4/multiprocessing/resource_sharer.pysend s z DupSocket.__init__..send)dup_resource_sharerregisterclose_id)selfZsockr r
)r r __init__ s zDupSocket.__init__c C s8 t j | j } | j } t j | SWd QXd S)z1Get the socket. This should only be called once.N)r get_connectionr Z
recv_bytessocketZ fromshare)r r
r r
r
r detach$ s zDupSocket.detachN)__name__
__module____qualname____doc__r r r
r
r
r r s DupFdc @ s. e Z d Z d Z d d Z d d Z d S)r z-Wrapper for fd which can be used at any time.c sL t j | f d d } f d d } t j | | | _ 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 } t j | SWd QXd S)z-Get the fd. This should only be called once.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 r - s c @ ss e Z d Z d Z d d Z d d Z e d d Z d d d
Z d d Z d
d Z
d d Z d S)_ResourceSharerz-Manager for resouces using background thread.c C s\ d | _ i | _ g | _ t j | _ d | _ d | _ d | _ t j
| t j 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 se | j V | j d k r&