fddlZddlZddlZddlZddlZddlmZddlmZddlm 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 6/usr/lib/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$sE!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.detach7s9!00: 3d ,,T2 3 3 3s ?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.registerHsd ZZ .}}$ IINI&*E]DKK "MM499-  . . .s A$A;;Bcddlm}|\}}||tjj}|j |t jf|S)zrrJrHrrr?joinis_aliver sub_warningr=r9itemsclear)rtimeoutrFrOrNrrs rrz_ResourceSharer.stopZs& ZZ $}}(4==#*#:#:#<#D#DFt   !!'*<<((*$$&;<$$&# $ !%*.++*;*;*=&C$G !!#! $ $ $s DD::Ec:|jjD]\}\}}||jj|jj |j |j j d|_d|_d|_yr ) r9rTrUr<_at_fork_reinitr=rr>r?)rrNrrs rrAz_ResourceSharer._afterforkos{"&++"3"3"5  C$ G   ""$ >> % 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