gddlZddlZddlZddlZddlZddlmZddlmZddlm Z dgZ ejdk(re dgz Z Gd de Z ne d gz Z Gd d e ZGd d e ZeZej"Zy)N)process) reduction)utilstopwin32 DupSocketceZdZdZdZdZy)r zPicklable wrapper for a socket.cz|jfd}tj|j|_y)NcJj|}|j|yN)share send_bytes)connpidrnew_socks F/opt/alt/python312/lib64/python3.12/multiprocessing/resource_sharer.pysendz DupSocket.__init__..sends s+&)dup_resource_sharerregisterclose_id)selfsockrrs @r__init__zDupSocket.__init__s-xxzH '(00x~~FDHrctj|j5}|j}t j |cdddS#1swYyxYw)z1Get the socket. This should only be called once.N)rget_connectionr recv_bytessocket fromshare)rrrs rdetachzDupSocket.detach$s<!00:d)''.;::s %AAN__name__ __module__ __qualname____doc__rr#rrr r s- G /rDupFdceZdZdZdZdZy)r*z-Wrapper for fd which can be used at any time.cztj|fd}fd}tj|||_y)Nc4tj||yr )r send_handle)rrnew_fds rrzDupFd.__init__..send1s%%dFC8rc0tjyr )osr)r/srrzDupFd.__init__..close3s r)r1rrrr)rfdrrr/s @rrzDupFd.__init__/s.VVBZF 9 !'00u=DHrctj|j5}tj|cdddS#1swYyxYw)z-Get the fd. This should only be called once.N)rrrr recv_handle)rrs rr#z DupFd.detach7s0!00:d ,,T2;::s ?ANr$r)rrr*r*-s; > 3rcFeZdZdZdZdZedZd dZdZ dZ d Z y) _ResourceSharerz.Manager for resources using background thread.cd|_i|_tj|_d|_d|_d|_tj|tjy)Nr) _key_cache threadingLock_lock _listener_address_threadrregister_after_forkr6 _afterfork)rs rrz_ResourceSharer.__init__?sI  ^^%      'A'ABrc|j5|j|j|xjdz c_||f|j|j<|j|jfcdddS#1swYyxYw)z+Register resource, returning an identifier.Nr)r<r>_startr8r9)rrrs rrz_ResourceSharer.registerHsY ZZ}}$ IINI&*E]DKK "MM499- ZZs A$A;;Bcddlm}|\}}||tjj}|j |t jf|S)zrrJrHrrr?joinis_aliver sub_warningr=r9itemsclear)rtimeoutrFrOrNrrs rrz_ResourceSharer.stopZs& ZZ}}(4==#*#:#:#<#D#DFt   !!'*<<((*$$&;<$$&# $ !%*.++*;*;*=&C$G+> !!#!ZZs DD::Ec:|jjD]\}\}}||jj|jj |j |j j d|_d|_d|_yr ) r9rTrUr<_at_fork_reinitr=rr>r?)rrNrrs rrAz_ResourceSharer._afterforkosv"&++"3"3"5 C$ G#6  ""$ >> % NN "  rchddlm}|jJdtjd|t j jd|_|jj|_ tj|j}d|_ |j||_y) Nr)ListenerzAlready have Listenerz0starting listener and thread for sending handles)rHbacklog)targetT)rIrZr=rdebugrrJrHrMr>r:Thread_servedaemonstartr?)rrZts rrCz_ResourceSharer._startzs(~~%>'>>% EF!'*A*A*C*K*KUXY..   DKK 0   rc*ttdr6tjtjtj |j j 5}|j}| dddy|\}}|jj|\}} |||| dddv#|wxYw#1swYxYw#tjs$tjtjYUxYw)Npthread_sigmask)hasattrsignalre SIG_BLOCK valid_signalsr=acceptrecvr9popr is_exitingsys excepthookexc_info)rrmsgrNdestination_pidrrs rr`z_ResourceSharer._serves 6, -  " "6#3#3V5I5I5K L 4^^**,))+C{-,,/(C"&++//#"6KD% T?3--, 4(NNCLLN3sH C#C 7C#C $ B>-C 5C> CC  CC:Dr ) r%r&r'r(rr staticmethodrrrArCr`r)rrr6r6=s88C.$*  4rr6)r1rgr!rnr:rcontextrr__all__platformobjectr r*r6rrr)rrrys  (<<7 }G /F /  yG 3 3 Y4fY4x#$r