MINI MINI MANI MO
3
  \                 @   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)utilstopZwin32	DupSocketc               @   s    e Zd ZdZdd Zdd ZdS )r   zPicklable wrapper for a socket.c                s(   |j    fdd}tj| j| _d S )Nc                s    j |}| j| d S )N)shareZ
send_bytes)connpidr   )new_sock 7/usr/lib64/python3.6/multiprocessing/resource_sharer.pysend   s    
z DupSocket.__init__.<locals>.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 dS )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 Zd ZdZdd Zdd ZdS )r   z-Wrapper for fd which can be used at any time.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__.<locals>.sendc                  s   t j  d S )N)osr   r   )r   r   r
   r   3   s    zDupFd.__init__.<locals>.close)r   r   r   r   r   )r   fdr   r   r   )r   r
   r   /   s    
zDupFd.__init__c          	   C   s"