File: //lib64/python3.9/multiprocessing/__pycache__/resource_sharer.cpython-39.opt-1.pyc
a
    �DOg  �                   @   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 ZdZdd� Zdd� ZdS )r   zPicklable wrapper for a socket.c                    s(   |� � � � fdd�}t�|� j�| _d S )Nc                    s   � � |�}| �|� d S �N)�share�
send_bytes)�conn�pidr
   �Znew_sock� �7/usr/lib64/python3.9/multiprocessing/resource_sharer.py�send   s    
z DupSocket.__init__.<locals>.send)�dup�_resource_sharer�register�close�_id)�self�sockr   r   r   r   �__init__   s    zDupSocket.__init__c                 C   sB   t �| j��"}|�� }t�|�W  d  � S 1 s40    Y  dS )z1Get the socket.  This should only be called once.N)r   �get_connectionr   �
recv_bytes�socketZ	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 �|�� � fdd�}� fdd�}t�||�| _d S )Nc                    s   t �| � |� d S r	   )r   �send_handle)r   r
   �Znew_fdr   r   r   1   s    zDupFd.__init__.<locals>.sendc                      s   t �� � d S r	   )�osr   r   r%   r   r   r   3   s    zDupFd.__init__.<locals>.close)r&