File: //lib/python3.10/multiprocessing/__pycache__/resource_sharer.cpython-310.pyc
o
    E�h  �                   @   s�   d dl Z d dlZd dlZd dlZd dlZddlmZ ddlmZ ddlm	Z	 dgZ
ejdkr<e
dg7 Z
G d	d� de�Z
n
e
d
g7 Z
G dd
� d
e�ZG dd
� d
e�Ze� ZejZdS )�    N�   )�process)�	reduction)�util�stop�win32�	DupSocketc                   @   �    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   ��new_sock� �6/usr/lib/python3.10/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 sw   Y  dS )z1Get the socket.  This should only be called once.N)r   �get_connectionr   �
recv_bytes�socket�	fromshare)r   r
   r   r   r   r   �detach$   s   $�zDupSocket.detachN��__name__�
__module__�__qualname__�__doc__r   r    r   r   r   r   r      s    �DupFdc                   @   r	   )r&