grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026a ´i ã@s²ddlZddlZddlZddlZddlZddlmZddlmZddlm Z dgZ ej dkrxe dg7Z Gd d„de ƒZ ne d g7Z Gd d „d e ƒZGd d „d e ƒZeƒZejZdS)éNé)Úprocess)Ú reduction)ÚutilÚstopÚwin32Ú DupSocketc@seZdZdd„Zdd„ZdS)rcs(| ¡‰‡fdd„}t |ˆj¡|_dS)Ncsˆ |¡}| |¡dS©N)ÚshareÚ send_bytes)ÚconnÚpidr ©Znew_sock©ú7/usr/lib64/python3.9/multiprocessing/resource_sharer.pyÚsends z DupSocket.__init__..send)ÚdupÚ_resource_sharerÚregisterÚcloseÚ_id)ÚselfÚsockrrrrÚ__init__s zDupSocket.__init__cCsBt |j¡�"}| ¡}t |¡WdƒS1s40YdSr )rÚget_connectionrÚ recv_bytesÚsocketZ fromshare)rr r rrrÚdetach$szDupSocket.detachN©Ú__name__Ú __module__Ú __qualname__rrrrrrrsÚDupFdc@seZdZdd„Zdd„ZdS)r"cs4t |¡‰‡fdd„}‡fdd„}t ||¡|_dS)Ncst |ˆ|¡dSr )rÚ send_handle)r r ©Znew_fdrrr1szDupFd.__init__..sendcst ˆ¡dSr )Úosrrr$rrr3szDupFd.__init__..close)r%rrrr)rÚfdrrrr$rr/s   zDupFd.__init__cCs:t |j¡�}t |¡WdƒS1s,0YdSr )rrrrÚ recv_handle)rr rrrr7sz DupFd.detachNrrrrrr"-sc@sJeZdZdd„Zdd„Zedd„ƒZddd „Zd d „Zd d „Z dd„Z dS)Ú_ResourceSharercCs: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�L|jdur| ¡|jd7_||f|j|j<|j|jfWdƒS1sX0YdS)Nr)r-r/Ú_startr)r*)rrrrrrrHs  z_ResourceSharer.registercCs<ddlm}|\}}||t ¡jd�}| |t ¡f¡|S)Nr©ÚClient©Úauthkey)Ú connectionr5rÚcurrent_processr7rr%Úgetpid)Úidentr5ÚaddressÚkeyÚcrrrrQs  z_ResourceSharer.get_connectionNcCsÊddlm}|j�¤|jdur¨||jt ¡jd�}| d¡| ¡|j   |¡|j   ¡rdt   d¡|j ¡d|_ d|_d|_|j ¡D]\}\}}|ƒqŠ|j ¡Wdƒn1s¼0YdS)Nrr4r6z._ResourceSharer thread did not stop when asked)r8r5r-r/rr9r7rrr0ÚjoinÚis_aliverÚ sub_warningr.r*ÚitemsÚclear)rÚtimeoutr5r>r=rrrrrrZs$  ÿ     z_ResourceSharer.stopcCs\|j ¡D]\}\}}|ƒq |j ¡|j ¡|jdurF|j ¡d|_d|_d|_dSr ) r*rBrCr-Ú_at_fork_reinitr.rr/r0)rr=rrrrrr2os    z_ResourceSharer._afterforkcCsXddlm}t d¡|t ¡jd�|_|jj|_ t j |j d�}d|_ | ¡||_dS)Nr)ÚListenerz0starting listener and thread for sending handlesr6)ÚtargetT)r8rFrÚdebugrr9r7r.r<r/r+ÚThreadÚ_serveÚdaemonÚstartr0)rrFÚtrrrr3zs   z_ResourceSharer._startcCsÊttdƒrt tjt ¡¡z„|j ¡�f}| ¡}|durJWdƒWqÆ|\}}|j  |¡\}}z|||ƒW|ƒn|ƒ0Wdƒn1s”0YWqt   ¡s¾t j t  ¡ŽYq0qdS)NÚpthread_sigmask)ÚhasattrÚsignalrNÚ SIG_BLOCKÚ valid_signalsr.ÚacceptÚrecvr*ÚpoprÚ is_exitingÚsysÚ excepthookÚexc_info)rr Úmsgr=Údestination_pidrrrrrrJ…s   2z_ResourceSharer._serve)N) rr r!rrÚ staticmethodrrr2r3rJrrrrr(=s      r()r%rPrrWr+ÚrÚcontextrrÚ__all__ÚplatformÚobjectrr"r(rrrrrrÚ s       \