o ?Og@sPgdZddlZddlZddlZddlZddlZddlZddlZddlZddlm Z ddl m Z ddl m Z ddlmZmZmZddl mZdd l mZdd l mZdd l mZzdd l mZWn eykd ZYnwdZedddZeejedddDZedeurddZeD]ZeeeqGddde Z!difddZ"ddZ#Gddde$Z%d d!Z&d"d#Z'Gd$d%d%e Z(Gd&d'd'e Z)e j*e j+fe j,e j-fd(Z.Gd)d*d*e Z/Gd+d,d,e0Z1Gd-d.d.e Z2d/d0Z3ifd1d2Z4  dmd3d4Z5Gd5d6d6e Z6Gd7d8d8e Z7dnd9d:Z8Gd;d<dd>e2Z:Gd?d@d@e:Z;GdAdBdBe2ZGdGdHdHe2Z?e4dIdJZ@GdKdLdLe@ZAe4dMdNZBdOdPieB_Ce4dQdRZDe4dSdTZEdUdUdUdPdPdVeE_CGdWdSdSeEZFGdXdYdYe/ZGeGdZejHeGd[ejHeGd\ejIe<eGd]ejJe:eGd^ejKe:eGd_ejLe:eGd`ejMe:eGdaejNe;eGdbejOe=eGdcejPeFeGddeeAeGdeeQeBeGd8e7e?eGd:e8eDeGd6e6e>eGjdPe9d dfeGjdUd dger&GdhdidiZRGdjdkdke(ZSGdldde/ZTdSdS)o) BaseManager SyncManager BaseProxyTokenN)getpid) format_exc) connection) reductionget_spawning_popen ProcessError)pool)process)util) get_context) shared_memoryFTSharedMemoryManagercCstj|j|ffSN)arraytypecodetobytes)ar?/opt/alt/python310/lib64/python3.10/multiprocessing/managers.py reduce_array/rcCsg|] }tti|qSr)typegetattr.0namerrr 3r!)itemskeysvaluescCstt|ffSr)listobjrrrrebuild_as_list5r)c@s2eZdZ dZddZddZddZdd Zd S) rtypeidaddressidcCs||||_|_|_dSrr+)selfr,r-r.rrr__init__DszToken.__init__cCs|j|j|jfSrr+r/rrr __getstate__GzToken.__getstate__cCs|\|_|_|_dSrr+r/staterrr __setstate__JrzToken.__setstate__cCsd|jj|j|j|jfS)Nz %s(typeid=%r, address=%r, id=%r)) __class____name__r,r-r.r1rrr__repr__MszToken.__repr__N)r8 __module__ __qualname__ __slots__r0r2r6r9rrrrr>s rrcCs6 |||||f|\}}|dkr|St||)N#RETURN)sendrecvconvert_to_error)cr. methodnameargskwdskindresultrrrdispatchUs   rGcCs^|dkr|S|dvr(t|tstd||t||dkr$td|St|Std|S)N#ERROR) #TRACEBACK#UNSERIALIZABLEz.Result {0!r} (kind '{1}') type is {2}, not strrJzUnserializable message: %s zUnrecognized message type {!r}) isinstancestr TypeErrorformatr RemoteError ValueError)rErFrrrr@_s   r@c@seZdZddZdS)rOcCsdt|jddS)NzM --------------------------------------------------------------------------- rzK---------------------------------------------------------------------------)rLrCr1rrr__str__oszRemoteError.__str__N)r8r:r;rQrrrrrOns rOcCs4 g}t|D]}t||}t|r||q|Sr)dirrcallableappend)r(tempr funcrrr all_methodsvs   rWcCs ddt|DS)NcSsg|] }|ddkr|qS)r_rrrrrr!r"z"public_methods..)rWr'rrrpublic_methodssrYc@seZdZ gdZddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ e e e dZ ddZddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'S)(Server) shutdowncreateaccept_connection get_methods debug_infonumber_of_objectsdummyincrefdecrefcCsxt|tstd|t|||_t||_t |\}}||dd|_ |j j |_ ddi|_ i|_ i|_t|_dS)Nz&Authkey {0!r} is type {1!s}, not bytes)r-Zbacklog0Nr)rKbytesrMrNrregistryrAuthenticationStringauthkeylistener_clientlistenerr- id_to_objid_to_refcountid_to_local_proxy_obj threadingLockmutex)r/rhr-rj serializerListenerClientrrrr0s     zServer.__init__c Cs t|_|t_zGtj|jd}d|_| z|j s+|j d|j r Wn t t fy7YnwWtjtjkrLtdtjt_tjt_tddStjtjkrftdtjt_tjt_tdw)N)targetTrzresetting stdout, stderrr)rpEvent stop_eventrcurrent_process_manager_serverThreadaccepterdaemonstartis_setwaitKeyboardInterrupt SystemExitsysstdout __stdout__rdebug __stderr__stderrexit)r/r|rrr serve_forevers4         zServer.serve_forevercCsF z|j}Wn tyYqwtj|j|fd}d|_|q)NTrvrC)rlZacceptOSErrorrpr{handle_requestr}r~)r/rAtrrrr|s zServer.accepterc Cs$d}zt||jt||j|}|\}}}}t||}Wnty/dtf}Yn!wz ||g|Ri|} WntyKdtf}Ynwd| f}z||WdSty} z-z |dtfWn tysYnwt d|t d|t d| WYd} ~ dSd} ~ ww)NrIr=zFailure to send message: %rz ... request was %r ... exception was %r) r Zdeliver_challengerjZanswer_challenger?r Exceptionrr>rinfo) r/rArequestignorefuncnamerCrDrVmsgrFerrr_handle_requests:      zServer._handle_requestcCsL zz||Wn tyYnwW|dSW|dS|wr)rrcloser/connrrrrs  zServer.handle_requestc Cs tdtj|j}|j}|j}|j sezd}}|}|\}}} } z ||\}} } Wn&t yV} zz |j |\}} } Wn t yK| wWYd} ~ nd} ~ ww|| vrft d|t || ft||}z || i| }Wnty}z d|f}WYd}~n*d}~ww| o| |d}|r||||\}}t||j|}d||ff}nd|f}Wn`t y|durdtf}n(z|j|}|||||g| Ri| }d|f}Wntydtf}YnwYn&tytdtjtdYntydtf}Ynwzz||Wnty*|d tfYnwWn1ty]}z$td tjtd |td ||td WYd}~nd}~ww|j rdSdS)Nz$starting server thread to service %rz+method %r of %r object is not in exposed=%rrH#PROXYr=rIz$got EOF -- exiting thread serving %rrrJzexception in thread serving %rz ... message was %rrr)rrrpcurrent_threadr r?r>rmrxrKeyErrorroAttributeErrorrrrgetr\rr-rfallback_mappingEOFErrorrrrr)r/rr?r>rmrBr(ridentrCrDexposed gettypeidkeZfunctionresrrr,ZridentZrexposedtokenZ fallback_funcrFrrr serve_clients              zServer.serve_clientcCs|Srrr/rrr(rrrfallback_getvalue?zServer.fallback_getvaluecCt|SrrLrrrr fallback_strBzServer.fallback_strcCrr)reprrrrr fallback_reprErzServer.fallback_repr)rQr9 #GETVALUEcCsdSrrr/rArrrraNrz Server.dummyc Cs |j;g}t|j}||D]}|dkr2|d||j|t|j|dddfqd|WdS1sBwYdS)Nrez %s: refcount=%s %srK ) rrr&rnr$sortrTrLrmjoin)r/rArFr$rrrrr_Qs $zServer.debug_infocCs t|jSr)lenrnrrrrr`as zServer.number_of_objectscCsb z)z td|dWnddl}|YW|jdSW|jdS|jw)Nz!manager received shutdown messager=Nr)rrr> traceback print_excrxset)r/rArrrrr[hs  zServer.shutdownc Os |jq|j|\}}}}|dur#|st|dkrtd|d} n||i|} |dur2t| }|durMt|tsEtd|t |t |t |}dt | } t d|| | t||f|j| <| |jvrnd|j| <Wdn1sxwY||| | t|fS)Nrz4Without callable, must have one non-keyword argumentrz,Method_to_typeid {0!r}: type {1!s}, not dictz%xz&%r callable returned object with id %r)rrrhrrPrYrKdictrMrNrr&r.rrrrmrnrbtuple) r/rAr,rCrDrSrmethod_to_typeid proxytyper(rrrrr\us<        z Server.createcCs t|j|jdS)Nr)rrmr.)r/rArrrrr^szServer.get_methodscCs$ |t_|d||dS)Nr)rprr r>r)r/rAr rrrr]s  zServer.accept_connectionc Cs|jRz |j|d7<Wn5tyD}z)||jvr8d|j|<|j||j|<|j|\}}}td|n|WYd}~n d}~wwWddSWddS1sXwYdS)Nrz&Server re-enabled tracking & INCREF %r)rrrnrrormrr)r/rArrr(rrrrrrbs$    "z Server.increfcCs||jvr||jvrtd|dS|j2|j|dkr,td||j||j||j|d8<|j|dkr@|j|=Wdn1sJwY||jvryd|j|<td||j |j|=WddS1srwYdSdS)NzServer DECREF skipping %rrz+Id {0!s} ({1!r}) has refcount {2:n}, not 1+r)NrNzdisposing of obj with id %r)rnrorrrrAssertionErrorrNrm)r/rArrrrrcs0       "z Server.decrefN)r8r:r;publicr0rr|rrrrrrrrar_r`r[r\r^r]rbrcrrrrrZs2  Q $ rZc@seZdZdgZdZdZdZdS)StatevaluerrN)r8r:r;r<INITIALSTARTEDSHUTDOWNrrrrrs r)pickleZ xmlrpclibc@seZdZ iZeZ  d!ddZddZddZd"d d Z e d"d d Z ddZ d#ddZ ddZddZddZddZeddZeddZe  d$dd ZdS)%rNrcCs\|dur tj}||_t||_t|_tj|j_ ||_ t |\|_ |_ |p*t|_dSr)rryrj_addressri_authkeyr_staterr _serializerrkZ _Listener_Clientr_ctx)r/r-rjrsctxrrrr0s   zBaseManager.__init__cCsd |jjtjkr'|jjtjkrtd|jjtjkrtdtd|jjt|j |j |j |j S)NAlready started serverManager has shut downUnknown state {!r}) rrrrrr rrNrZ _registryrrrr1rrr get_servers  zBaseManager.get_servercCs: t|j\}}||j|jd}t|ddtj|j_dS)Nrjra) rkrrrrGrrrr)r/rtrurrrrconnects  zBaseManager.connectrc Cs2 |jjtjkr'|jjtjkrtd|jjtjkrtdtd|jj|dur3t|s3t dt j dd\}}|j j t|j|j|j|j|j|||fd|_dd d |jjD}t|jd ||j_|j|||_|tj|j_tj|t|j|j|j|j|j|jfd d |_ dS)Nrrrzinitializer must be a callableF)Zduplexr:css|]}t|VqdSrr)rirrr 0sz$BaseManager.start..-rrCZ exitpriority)!rrrrrr rrNrSrMr ZPiperZProcessr _run_serverrrrr_processrZ _identityr8r r~rr?rFinalize_finalize_managerrr[)r/ initializerinitargsreaderwriterrrrrr~s@         zBaseManager.startc Cs` ttjtj|dur|||||||}||j|td|j| dS)Nzmanager serving at %r) signalSIGINTSIG_IGN_Serverr>r-rrrr) clsrhr-rjrsrrrserverrrrrBs  zBaseManager._run_servercOsX |j|j|jd}zt|dd|f||\}}W|n|wt||j||fS)Nrr\)rrrrGrr)r/r,rCrDrr.rrrr_createYs zBaseManager._createcCs4 |jdur|j||jsd|_dSdSdSr)rris_aliver/timeoutrrrres    zBaseManager.joincC6 |j|j|jd}z t|ddW|S|w)Nrr_rrrrGrrrrr _debug_infon  zBaseManager._debug_infocCr)Nrr`rrrrr_number_of_objectsxrzBaseManager._number_of_objectscCsf|jjtjkr ||jjtjkr1|jjtjkrtd|jjtjkr(tdtd|jj|S)NzUnable to start serverrr) rrrrr~rr rrNr1rrr __enter__s zBaseManager.__enter__cC |dSr)r[r/exc_typeZexc_valZexc_tbrrr__exit__ zBaseManager.__exit__cCs |rZtdz|||d}z t|ddW|n|wWn ty-Ynw|jdd|rZtdt|drZtd||jdd|rZtd t j |_ zt j |=WdStyoYdSw) Nz#sending shutdown message to managerrr[g?)rzmanager still alive terminatez'trying to `terminate()` manager processz#manager still alive after terminate)rrrrGrrrhasattrrrrrr_address_to_localr)rr-rjr5rrrrrrs4          zBaseManager._finalize_managercC|jSr)rr1rrrr-szBaseManager.addressTc s d|jvr |j|_durt|ptdd}|p!tdd}|r/t|D]\}}q*|||f|j<|rLfdd} | _t|| dSdS)Nr _exposed__method_to_typeid_csftd|jg|Ri|\}}||j||j|d}|j|j|jd}t|dd|jf|S)Nz)requesting creation of a shared %r objectmanagerrjrrrc) rrrrrrr-rGr.)r/rCrDrZexpproxyrrr,rrrUs z"BaseManager.register..temp) __dict__rcopy AutoProxyrr&r#r8setattr) rr,rSrrr create_methodkeyrrUrrrregisters$     zBaseManager.register)NNrNrfr)NNNNT)r8r:r;rrZrr0rrr~ classmethodrrrrrrr staticmethodrpropertyr-r rrrrrs6   +        rc@eZdZddZddZdS)ProcessLocalSetcCst|dddS)NcS|Sr)clearr'rrrsz*ProcessLocalSet.__init__..)rregister_after_forkr1rrrr0rzProcessLocalSet.__init__cCs t|dfSrf)rr1rrr __reduce__rzProcessLocalSet.__reduce__N)r8r:r;r0rrrrrr rc@seZdZ iZeZ  dddZddZdifd d Z d d Z d dZ e ddZ ddZddZddZddZddZdS)rNTFc Cstj!tj|jd}|durttf}|tj|j<Wdn1s'wY|d|_|d|_ ||_ |j j |_ ||_ ||_t|d|_||_|durYt||_n|j durd|j j|_ntj|_|rp|t|tjdS)Nrr)r_mutexrrr-rZForkAwareLocalr_tls_idset_tokenr._id_managerrrkr_owned_by_managerrrirryrj_increfr _after_fork) r/rrsrrjrrb manager_ownedZ tls_idsetrrrr0s.       zBaseProxy.__init__cCsdtdtj}tjdkr|dtj7}|j|jj |j d}t |dd|f||j _ dS)Nzmaking connection to managerZ MainThread|rr])rrrryr rprrrr-rrGrr )r/r rrrr_connects   zBaseProxy._connectrc Cs z|jj}Wnty!tdtj||jj}Ynw| |j |||f| \}}|dkr8|S|dkrn|\}}|j j |jd} |jj|_| ||j|j |j|d} |j|j|jd}t|dd|jf| St||)Nz#thread %r does not own a connectionr=rrrrc)rr rrrrprr r!r>rr?rrr,rr-rrrrGr.r@) r/rBrCrDrrErFrrrrrrr _callmethod%s4       zBaseProxy._callmethodcCs |dS)Nrr#r1rrr _getvalueCs zBaseProxy._getvaluec Cs|jr td|jjdS|j|jj|jd}t|dd|j ftd|jj|j |j |j o5|j j }tj|tj|j|j||j|j |jfdd|_dS)Nz%owned_by_manager skipped INCREF of %rrrbz INCREF %r r)rrrrr.rr-rrGrraddrrrr_decrefrZ_close)r/rr5rrrrIs   zBaseProxy._increfc Cs||j|dus|jtjkrBztd|j||j|d}t|dd|jfWnt yA}z td|WYd}~n d}~wwtd|j|sbt |drdtdt j |j|`dSdSdS)Nz DECREF %rrrcz... decref failed %sz%DECREF %r -- manager already shutdownr z-thread %r has no more proxies so closing conn)discardr.rrrrrr-rGrrrprr r r)rrjr5ZtlsZidsetrrrrrrr(]s$  zBaseProxy._decrefc CsJd|_z|WdSty$}ztd|WYd}~dSd}~ww)Nzincref failed: %s)rrrrr)r/rrrrrvszBaseProxy._after_forkcCsZi}tdur |j|d<t|ddr!|j|d<tt|j|j|ffStt||j|j|ffS)Nrj_isautoFr) r rrr RebuildProxyrrrrr/rDrrrr~s    zBaseProxy.__reduce__cCrr)r%)r/Zmemorrr __deepcopy__rzBaseProxy.__deepcopy__cCsdt|j|jjt|fS)Nz<%s object, typeid %r at %#x>)rr8rr,r.r1rrrr9szBaseProxy.__repr__cCs6 z|dWStyt|dddYSw)Nr9r"z; '__str__()' failed>)r#rrr1rrrrQs   zBaseProxy.__str__NNNTF)r8r:r;rrZForkAwareThreadLockrr0r!r#r%rr r(rrr-r9rQrrrrrs$ )    rcCs ttdd}|r+|j|jkr+td|d|d<|j|jvr+|j|j|j|j<| ddo9ttdd }|||fd|i|S)Nrzz*Rebuild a proxy owned by manager, token=%rTrrbZ _inheritingF) rrryr-rrr.rormpop)rVrrsrDrrbrrrr+s    r+cCsp t|}z|||fWStyYnwi}|D] }td||f|qt|tf|}||_||||f<|S)NzOdef %s(self, /, *args, **kwds): return self._callmethod(%r, args, kwds))rrexecrrr)r r_cacheZdicZmeth ProxyTyperrr MakeProxyTypes$  r3c Cs t|d}|dur&||j|d}zt|dd|f}W|n|w|dur1|dur1|j}|dur:tj}td|j |} | ||||||d} d| _ | S)Nrrr^z AutoProxy[%s])rrjrbrT) rkr-rGrrrryrjr3r,r*) rrsrrjrrbrrrr2rrrrrs"   rc@r) NamespacecKs|j|dSr)rupdater,rrrr0r3zNamespace.__init__cCsZt|j}g}|D]\}}|ds|d||fq |d|jjd|fS)NrXz%s=%rz%s(%s)z, ) r&rr# startswithrTrr7r8r)r/r#rUr rrrrr9s  zNamespace.__repr__N)r8r:r;r0r9rrrrr4rr4c@s8eZdZd ddZddZddZdd ZeeeZd S) ValueTcC||_||_dSr) _typecode_value)r/rrlockrrrr0 zValue.__init__cCrrr:r1rrrrsz Value.getcCs ||_dSrr=r/rrrrr z Value.setcCsdt|j|j|jfS)Nz %s(%r, %r))rr8r9r:r1rrrr9szValue.__repr__NT) r8r:r;r0rrr9r rrrrrr7s  r7cCs t||Sr)r)rsequencer;rrrArrayrrBc@s8eZdZdZddZddZddZdd Zd d Zd S) IteratorProxy)__next__r>throwrcC|Srrr1rrr__iter__rzIteratorProxy.__iter__cG |d|S)NrDr$r/rCrrrrD rzIteratorProxy.__next__cGrH)Nr>r$rIrrrr> rzIteratorProxy.sendcGrH)NrEr$rIrrrrErzIteratorProxy.throwcGrH)Nrr$rIrrrrrzIteratorProxy.closeN) r8r:r;rrGrDr>rErrrrrrCs rCc@s2eZdZdZd ddZddZdd Zd d ZdS) AcquirerProxy)acquirereleaseTNcCs"|dur|fn||f}|d|SNrKr$)r/ZblockingrrCrrrrKs zAcquirerProxy.acquirecC |dSNrLr$r1rrrrLr?zAcquirerProxy.releasecCrNrMr$r1rrrrr?zAcquirerProxy.__enter__cCrNrOr$rrrrrr?zAcquirerProxy.__exit__)TN)r8r:r;rrKrLrrrrrrrJs   rJc@s6eZdZdZd ddZd ddZdd Zd d d ZdS)ConditionProxy)rKrLrnotify notify_allNcC|d|fSNrr$rrrrr#r*zConditionProxy.waitrcCrS)NrQr$)r/nrrrrQ%r*zConditionProxy.notifycCrN)NrRr$r1rrrrR'r?zConditionProxy.notify_allcCsj|}|r|S|durt|}nd}d}|s3|dur)|t}|dkr) |S|||}|r|S)Nr)time monotonicr)r/Z predicaterrFZendtimeZwaittimerrrwait_for)s"  zConditionProxy.wait_forr)r)r8r:r;rrrQrRrXrrrrrP!s   rPc@s2eZdZdZddZddZddZd d d ZdS) EventProxy)rrrrcCrN)Nrr$r1rrrr>r?zEventProxy.is_setcCrNNrr$r1rrrr@r?zEventProxy.setcCrN)Nrr$r1rrrrBr?zEventProxy.clearNcCrSrTr$rrrrrDr*zEventProxy.waitr)r8r:r;rrrrrrrrrrY<s rYc@sNeZdZdZdddZddZddZed d Zed d Z ed dZ dS) BarrierProxy)__getattribute__rabortresetNcCrSrTr$rrrrrJr*zBarrierProxy.waitcCrN)Nr]r$r1rrrr]Lr?zBarrierProxy.abortcCrN)Nr^r$r1rrrr^Nr?zBarrierProxy.resetcC |ddS)Nr\)partiesr$r1rrrr`P zBarrierProxy.partiescCr_)Nr\) n_waitingr$r1rrrrbSrazBarrierProxy.n_waitingcCr_)Nr\)brokenr$r1rrrrcVrazBarrierProxy.brokenr) r8r:r;rrr]r^r r`rbrcrrrrr[Hs   r[c@s(eZdZdZddZddZddZdS) NamespaceProxy)r\ __setattr__ __delattr__cCs0|ddkr t||St|d}|d|fS)NrrXr#r\)objectr\r/r  callmethodrrr __getattr__]    zNamespaceProxy.__getattr__cCs4|ddkr t|||St|d}|d||fS)NrrXr#re)rgrer\)r/r rrirrrrebs  zNamespaceProxy.__setattr__cCs0|ddkr t||St|d}|d|fS)NrrXr#rf)rgrfr\rhrrrrfgrkzNamespaceProxy.__delattr__N)r8r:r;rrjrerfrrrrrd[s  rdc@s4eZdZdZddZddZeeeZee j Z dS) ValueProxy)rrcCrN)Nrr$r1rrrrpr?zValueProxy.getcCrSrZr$r>rrrrrr*zValueProxy.setN) r8r:r;rrrr rr types GenericAlias__class_getitem__rrrrrlns  rl BaseListProxy)__add__ __contains__ __delitem__ __getitem____len____mul__ __reversed____rmul__ __setitem__rTcountextendindexinsertr/removereverser__imul__c@r) ListProxycC|d|f|S)Nr{r$r>rrr__iadd__zListProxy.__iadd__cCr)Nrr$r>rrrrrzListProxy.__imul__N)r8r:r;rrrrrrrs r DictProxy)rrrsrtrGruryrrrr#r$r/popitem setdefaultr5r%rGIterator ArrayProxy)rurtry PoolProxy) Zapply apply_asyncrimapimap_unorderedrmap map_asyncstarmap starmap_asyncrZ AsyncResult)rrrrrc@r)rcCrFrrr1rrrrrzPoolProxy.__enter__cCrr)rrrrrrrzPoolProxy.__exit__N)r8r:r;rrrrrrrrc@s eZdZdS)rN)r8r:r;rrrrrsrQueueZ JoinableQueuerwrqRLock SemaphoreBoundedSemaphore ConditionBarrierPoolr&r)rr)rc@sJeZdZ gfddZddZddZddZd d Zd d Zd dZ dS)_SharedMemoryTrackercCr8rZshared_memory_context_name segment_names)r/r rrrrr0r<z_SharedMemoryTracker.__init__cCs* td|dt|j|dS)NzRegister segment  in pid )rrrrrTr/ segment_namerrrregister_segmentsz%_SharedMemoryTracker.register_segmentcCsD td|dt|j|t|}||dS)NzDestroy segment r) rrrrr~r SharedMemoryrunlink)r/rZsegmentrrrdestroy_segments    z$_SharedMemoryTracker.destroy_segmentcCs$ |jddD]}||qdSr)rrrrrrrs z_SharedMemoryTracker.unlinkcCs(td|jjdt|dS)NzCall z .__del__ in )rrr7r8rrr1rrr__del__s z_SharedMemoryTracker.__del__cCs |j|jfSrrr1rrrr2rz!_SharedMemoryTracker.__getstate__cCs|j|dSr)r0r4rrrr6r*z!_SharedMemoryTracker.__setstate__N) r8r:r;r0rrrrr2r6rrrrrs   rc@sJeZdZejgdZddZddZddZdd Zd d Z d d Z dS)SharedMemoryServer) track_segmentrelease_segment list_segmentscOs`tj|g|Ri||j}t|trt|}td|dt|_ t dtdS)NZshm_rXz"SharedMemoryServer started by pid ) rZr0r-rKrgosfsdecoderrshared_memory_contextrr)r/rCkwargsr-rrrr0s  zSharedMemoryServer.__init__cOs< t|j|ddr|j|d<tj|||g|Ri|S)Nr"Z_shared_memory_proxyr)rrhrrZr\)r/rAr,rCrrrrr\s zSharedMemoryServer.createcCs |jt||Sr)rrrZr[rrrrr[s  zSharedMemoryServer.shutdowncC |j|dSr)rrr/rArrrrrsz SharedMemoryServer.track_segmentcCrr)rrrrrrrsz"SharedMemoryServer.release_segmentcCs |jjSr)rrrrrrrsz SharedMemoryServer.list_segmentsN) r8r:r;rZrr0r\r[rrrrrrrrs   rc@s:eZdZ eZddZddZddZddZd d Z d S) rcOsTtjdkrddlm}|tj|g|Ri|t|j j dt dS)Nposixr)resource_trackerz created by pid ) rr rZensure_runningrr0rrr7r8r)r/rCrrrrrr0/s  zSharedMemoryManager.__init__cCst|jjdtdS)Nz.__del__ by pid )rrr7r8rr1rrrr;szSharedMemoryManager.__del__cCsf |jjtjkr'|jjtjkrtd|jjtjkrtdtd|jj||j |j |j |j S)Nz"Already started SharedMemoryServerz!SharedMemoryManager has shut downr) rrrrrr rrNrrrrrr1rrrr?s  zSharedMemoryManager.get_serverc Cs |j|j|jd/}tjdd|d}z t|dd|jfWnty0}z||d}~wwWd|S1ss              P  w 4            %-