HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.10/multiprocessing/__pycache__/resource_sharer.cpython-310.pyc
o

�i�@s�ddlZddlZddlZddlZddlZddlmZddlmZddlm	Z	dgZ
ejdkr<e
dg7Z
Gd	d�de�Z
n
e
d
g7Z
Gdd
�d
e�ZGdd
�d
e�Ze�ZejZdS)�N�)�process)�	reduction)�util�stop�win32�	DupSocketc@� eZdZdZdd�Zdd�ZdS)rzPicklable wrapper for a socket.cs(|����fdd�}t�|�j�|_dS)Ncs��|�}|�|�dS�N)�share�
send_bytes)�conn�pidr�Znew_sock��</usr/local/lib/python3.10/multiprocessing/resource_sharer.py�sends
z DupSocket.__init__.<locals>.send)�dup�_resource_sharer�register�close�_id)�self�sockrrrr�__init__szDupSocket.__init__cCsBt�|j��}|��}t�|�Wd�S1swYdS)z1Get the socket.  This should only be called once.N)r�get_connectionr�
recv_bytes�socketZ	fromshare)rr
rrrr�detach$s$�zDupSocket.detachN��__name__�
__module__�__qualname__�__doc__rrrrrrrs�DupFdc@r	)r$z-Wrapper for fd which can be used at any time.cs4t�|���fdd�}�fdd�}t�||�|_dS)Ncst�|�|�dSr
)r�send_handle)r
r�Znew_fdrrr1szDupFd.__init__.<locals>.sendcst���dSr
)�osrrr&rrr3szDupFd.__init__.<locals>.close)r'rrrr)r�fdrrrr&rr/s
zDupFd.__init__cCs:t�|j��
}t�|�Wd�S1swYdS)z-Get the fd.  This should only be called once.N)rrrr�recv_handle)rr
rrrr7s$�zDupFd.detachNrrrrrr$-sc@sNeZdZdZdd�Zdd�Zedd��Zdd	d
�Zdd�Z	d
d�Z
dd�ZdS)�_ResourceSharerz.Manager for resources using background thread.cCs:d|_i|_t��|_d|_d|_d|_t�	|t
j�dS)Nr)�_key�_cache�	threading�Lock�_lock�	_listener�_address�_threadr�register_after_forkr*�
_afterfork)rrrrr?s
z_ResourceSharer.__init__cCsf|j�&|jdur
|��|jd7_||f|j|j<|j|jfWd�S1s,wYdS)z+Register resource, returning an identifier.Nr)r/r1�_startr+r,)rrrrrrrHs

$�z_ResourceSharer.registercCs<ddlm}|\}}||t��jd�}|�|t��f�|S)z<Return connection from which to receive identified resource.r��Client��authkey)�
connectionr7r�current_processr9rr'�getpid)�identr7�address�key�crrrrQs
z_ResourceSharer.get_connectionNcCs�ddlm}|j�[|jdur\||jt��jd�}|�d�|��|j	�
|�|j	��r2t�
d�|j��d|_	d|_d|_|j��D]	\}\}}|�qE|j��Wd�dSWd�dS1sgwYdS)z:Stop the background thread and clear registered resources.rr6Nr8z._ResourceSharer thread did not stop when asked)r:r7r/r1rr;r9rrr2�join�is_aliver�sub_warningr0r,�items�clear)r�timeoutr7r@r?rrrrrrZs*
�



�"�z_ResourceSharer.stopcCs\|j��D]	\}\}}|�q|j��|j��|jdur#|j��d|_d|_d|_dSr
)	r,rDrEr/�_at_fork_reinitr0rr1r2)rr?rrrrrr4os




z_ResourceSharer._afterforkcCsjddlm}|jdusJd��t�d�|t��jd�|_|jj|_	t
j|jd�}d|_
|��||_dS)Nr)�ListenerzAlready have Listenerz0starting listener and thread for sending handlesr8)�targetT)r:rHr0r�debugrr;r9r>r1r-�Thread�_serve�daemon�startr2)rrH�trrrr5zs


z_ResourceSharer._startcCs�ttd�rt�tjt���	zD|j���5}|��}|dur(	Wd�WdS|\}}|j�	|�\}}z
|||�W|�n|�wWd�n1sMwYWnt
��sbtj
t���Yq)N�pthread_sigmask)�hasattr�signalrP�	SIG_BLOCK�
valid_signalsr0�accept�recvr,�popr�
is_exiting�sys�
excepthook�exc_info)rr
�msgr?�destination_pidrrrrrrL�s*
���
��z_ResourceSharer._server
)r r!r"r#rr�staticmethodrrr4r5rLrrrrr*=s		

r*)r'rRrrYr-�r�contextrr�__all__�platform�objectrr$r*rrrrrr�<module>s"



\