a  zeǸ@sLgdZddlZddlZddlZddlZddlZddlZddlZddlZddlm Z ddl m Z ddl m Z ddlmZmZmZddl mZdd l mZdd l mZdd l mZzdd l mZWneyd ZYn0dZedddZeejedddDZedeur8ddZeD]Zeeeq$Gddde 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/d0Z3ifd1d2Z4dmd3d4Z5Gd5d6d6e 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 dgerHGdhdidiZRGdjdkdke(ZSGdldde/ZTdS)o) BaseManager SyncManager BaseProxyTokenN)getpid) format_exc) connection) reductionget_spawning_popen ProcessError)pool)process)util) get_context) shared_memoryFTSharedMemoryManagercCstj|j|ffSN)arraytypecodetobytes)arL/opt/bitninja-python-dojo/embedded/lib/python3.9/multiprocessing/managers.py reduce_array/srcCsg|]}tti|qSr)typegetattr.0namerrr 3r )itemskeysvaluescCstt|ffSr)listobjrrrrebuild_as_list5sr(c@s0eZdZdZddZddZddZdd Zd S) rtypeidaddressidcCs||||_|_|_dSrr))selfr*r+r,rrr__init__DszToken.__init__cCs|j|j|jfSrr)r-rrr __getstate__GszToken.__getstate__cCs|\|_|_|_dSrr)r-staterrr __setstate__JszToken.__setstate__cCsd|jj|j|j|jfS)Nz %s(typeid=%r, address=%r, id=%r)) __class____name__r*r+r,r/rrr__repr__MszToken.__repr__N)r5 __module__ __qualname__ __slots__r.r0r3r6rrrrr>s rrcCs8|||||f|\}}|dkr*|St||dS)N#RETURN)sendrecvconvert_to_error)cr, methodnameargskwdskindresultrrrdispatchUs  rDcCsd|dkr |S|dvrRt|ts4td||t||dkrHtd|St|Sntd|SdS)N#ERROR) #TRACEBACK#UNSERIALIZABLEz.Result {0!r} (kind '{1}') type is {2}, not strrGzUnserializable message: %s zUnrecognized message type {!r}) isinstancestr TypeErrorformatr RemoteError ValueError)rBrCrrrr=_s    r=c@seZdZddZdS)rLcCsdt|jddS)NzM --------------------------------------------------------------------------- rzK---------------------------------------------------------------------------)rIr@r/rrr__str__oszRemoteError.__str__N)r5r7r8rNrrrrrLnsrLcCs2g}t|D] }t||}t|r ||q |Sr)dirrcallableappend)r'temprfuncrrr all_methodsvs    rTcCsddt|DS)NcSsg|]}|ddkr|qS)r_rrrrrr r!z"public_methods..)rTr&rrrpublic_methodssrVc@seZdZgdZddZddZddZdd Zd d Zd d Z ddZ ddZ e e e dZ ddZ ddZddZddZddZddZdd 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+backlog0Nr)rHbytesrJrKrregistryrAuthenticationStringauthkeylistener_clientlistenerr+ id_to_objid_to_refcountid_to_local_proxy_obj threadingLockmutex)r-rfr+rh serializerListenerClientrrrr.s     zServer.__init__c Cst|_|t_ztj|jd}d|_| z|j sL|j dq4Wnt t fydYn0Wtjtjkrtdtjt_tjt_tdn2tjtjkrtdtjt_tjt_td0dS)N)targetTrzresetting stdout, stderrr)rnEvent stop_eventrcurrent_process_manager_serverThreadaccepterdaemonstartis_setwaitKeyboardInterrupt SystemExitsysstdout __stdout__rdebug __stderr__stderrexit)r-rzrrr serve_forevers*       zServer.serve_forevercCsLz|j}Wnty$YqYn0tj|j|fd}d|_|qdS)Nrtr@T)rjacceptOSErrorrnryhandle_requestr{r|)r-r>trrrrzs  zServer.accepterc Cs6d}}}z>t||jt||j|}|\}}}}t||}Wntyfdtf} YnB0z||g|Ri|}Wntydtf} Yn 0d|f} z|| Wnrty(} zXz|dtfWntyYn0t d| t d|t d| WYd} ~ n d} ~ 00| dS)NrFr:zFailure to send message: %rz ... request was %r ... exception was %r) r deliver_challengerhanswer_challenger<r Exceptionrr;rinfoclose) r-r>funcnamerCrequestignorer@rArSmsgerrrrs2       "zServer.handle_requestc Cstdtj|j}|j}|j}|j sΐz:d}}|}|\}}} } z||\}} } WnPt y} z8z|j |\}} } Wnt y| Yn0WYd} ~ n d} ~ 00|| vrt d|t || ft||}z|| i| }Wn.ty}zd|f}WYd}~nXd}~00| o,| |d}|rb||||\}}t||j|}d||ff}nd|f}Wnt y|durdtf}nRz2|j|}|||||g| Ri| }d|f}Wntydtf}Yn0YnLtytdtjtdYnty2dtf}Yn0z4z ||Wn"tyd|d tfYn0Wq$ty}zHtd tjtd |td ||td WYd}~q$d}~00q$dS)Nz$starting server thread to service %rz+method %r of %r object is not in exposed=%rrE#PROXYr:rFz$got EOF -- exiting thread serving %rrrGzexception in thread serving %rz ... message was %rrr)rrrncurrent_threadrr<r;rkrvr}KeyErrorrmAttributeErrorrrrgetrYrr+rfallback_mappingEOFErrorrrrr)r-connr<r;rkr?r'ridentr@rAexposed gettypeidkefunctionresrrr*ZridentZrexposedtokenZ fallback_funcrCrrr serve_clients               zServer.serve_clientcCs|Srrr-rrr'rrrfallback_getvalue7szServer.fallback_getvaluecCst|SrrIrrrr fallback_str:szServer.fallback_strcCst|Sr)reprrrrr fallback_repr=szServer.fallback_repr)rNr6 #GETVALUEcCsdSrrr-r>rrrr^Fsz Server.dummyc Cs|jvg}t|j}||D]<}|dkr&|d||j|t|j|dddfq&d|WdS1s0YdS)Nrcz %s: refcount=%s %srK ) rpr%rlr#sortrQrIrkjoin)r-r>rCr#rrrrr\Is zServer.debug_infocCs t|jSr)lenrlrrrrr]YszServer.number_of_objectscCsVzDztd|dWnddl}|Yn0W|jn |j0dS)Nz!manager received shutdown messager:Nr)rrr; traceback print_excrvset)r-r>rrrrrX`s zServer.shutdownc Os|j|j|\}}}}|durD|s2t|dkr:td|d} n||i|} |durbt| }|durt|tstd|t |t |t |}dt | } t d|| | t||f|j| <| |jvrd|j| <Wdn1s0Y||| | 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)rprfrrMrVrHdictrJrKrr%r,rrrrkrlr_tuple) r-r>r*r@rArPrmethod_to_typeid proxytyper'rrrrrYms6     ( z Server.createcCst|j|jdS)Nr)rrkr,)r-r>rrrrr[szServer.get_methodscCs"|t_|d||dS)Nr)rnrrr;r)r-r>rrrrrZs  zServer.accept_connectionc Cs|jz|j|d7<Wnjty}zR||jvrpd|j|<|j||j|<|j|\}}}td|n|WYd}~n d}~00Wdn1s0YdS)Nrz&Server re-enabled tracking & INCREF %r)rprlrrmrkrr)r-r>rrr'rrrrrr_s  z Server.increfcCs||jvr$||jvr$td|dS|jd|j|dkrXtd||j||j||j|d8<|j|dkr|j|=Wdn1s0Y||jvrd|j|<td||j|j|=Wdn1s0YdS)NzServer DECREF skipping %rrz+Id {0!s} ({1!r}) has refcount {2:n}, not 1+r)NrNzdisposing of obj with id %r)rlrmrrrpAssertionErrorrKrk)r-r>rrrrr`s*   &   z Server.decrefN)r5r7r8publicr.rrzrrrrrrr^r\r]rXrYr[rZr_r`rrrrrWs, "Q $rWc@seZdZdgZdZdZdZdS)StatevaluerrN)r5r7r8r9INITIALSTARTEDSHUTDOWNrrrrrsr)pickle xmlrpclibc@seZdZiZeZd!ddZddZddZd"d d Z e d#d d Z ddZ d$ddZ ddZddZddZddZeddZeddZe d%dd ZdS)&rNrcCs\|durtj}||_t||_t|_tj|j_ ||_ t |\|_ |_ |pTt|_dSr)rrwrh_addressrg_authkeyr_staterr _serializerriZ _Listener_Clientr_ctx)r-r+rhrqctxrrrr.s   zBaseManager.__init__cCsf|jjtjkrP|jjtjkr&tdn*|jjtjkr>tdntd|jjt|j |j |j |j S)NAlready started serverManager has shut downUnknown state {!r}) rrrrrr rrKrW _registryrrrr/rrr get_servers    zBaseManager.get_servercCs8t|j\}}||j|jd}t|ddtj|j_dS)Nrhr^) rirrrrDrrrr)r-rrrsrrrrconnects zBaseManager.connectrc Cs4|jjtjkrP|jjtjkr&tdn*|jjtjkr>tdntd|jj|durht|sht 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)duplexr:css|]}t|VqdSrr)rirrr (r!z$BaseManager.start..-rr@ exitpriority)!rrrrrr rrKrPrJr PiperProcessr _run_serverrrrr_processr _identityr5rr|rr<rFinalize_finalize_managerrrX)r- initializerinitargsreaderwriterrrrrr|s>          zBaseManager.startc Cs^ttjtj|dur |||||||}||j|td|j| dS)Nzmanager serving at %r) signalSIGINTSIG_IGN_Serverr;r+rrrr) clsrfr+rhrqrrrserverrrrr:s zBaseManager._run_servercOsV|j|j|jd}z&t|dd|f||\}}W|n |0t||j||fS)NrrY)rrrrDrr)r-r*r@rArr,rrrr_createQs zBaseManager._createcCs*|jdur&|j||js&d|_dSr)rris_aliver-timeoutrrrr]s   zBaseManager.joincCs8|j|j|jd}zt|ddW|S|0dS)Nrr\rrrrDrr-rrrr _debug_infofs  zBaseManager._debug_infocCs8|j|j|jd}zt|ddW|S|0dS)Nrr]rrrrr_number_of_objectsps  zBaseManager._number_of_objectscCsj|jjtjkr||jjtjkrf|jjtjkr.temp) __dict__rcopy AutoProxyrr%r"r5setattr) rr*rPrrr create_methodkeyrrRrrrregisters"     zBaseManager.register)NNrN)Nr)Nr)N)NNNNT)r5r7r8rrWrr.rrr| classmethodrrrrrrr staticmethodrpropertyr+r rrrrrs2  +       rc@seZdZddZddZdS)ProcessLocalSetcCst|dddS)NcSs|Sr)clearr&rrrr!z*ProcessLocalSet.__init__..)rregister_after_forkr/rrrr.szProcessLocalSet.__init__cCs t|dfSrd)rr/rrr __reduce__szProcessLocalSet.__reduce__N)r5r7r8r.rrrrrrsrc@s|eZdZiZeZdddZddZdifd d Z d d Z d dZ e ddZ ddZddZddZddZddZdS)rNTFc CstjBtj|jd}|dur:ttf}|tj|j<Wdn1sN0Y|d|_|d|_ ||_ |j j |_ ||_ ||_t|d|_||_|durt||_n"|j dur|j j|_n tj|_|r|t|tjdS)Nrr)r_mutexrrr+rForkAwareLocalr_tls_idset_tokenr,_id_managerrrir_owned_by_managerrrgrrwrh_increfr _after_fork) r-rrqrrhrr_ manager_ownedZ tls_idsetrrrr.s**      zBaseProxy.__init__cCsdtdtj}tjdkr4|dtj7}|j|jj |j d}t |dd|f||j _ dS)Nzmaking connection to manager MainThread|rrZ)rrrrwrrnrrrr+rrDrr )r-rrrrr_connects  zBaseProxy._connectrc Csz |jj}Wn4ty@tdtj||jj}Yn0| |j |||f| \}}|dkrn|S|dkr|\}}|j j |jd} |jj|_| ||j|j |j|d} |j|j|jd}t|dd|jf| St||dS)Nz#thread %r does not own a connectionr:rrrr`)rr rrrrnrrr"r;rr<rrr*rr+rrrrDr,r=) r-r?r@rArrBrCrrrrrrr _callmethods0     zBaseProxy._callmethodcCs |dS)Nrr$r/rrr _getvalue;szBaseProxy._getvaluec Cs|jrtd|jjdS|j|jj|jd}t|dd|j ftd|jj|j |j |j oj|j j }tj|tj|j|j||j|j |jfdd|_dS)Nz%owned_by_manager skipped INCREF of %rrr_z INCREF %r r)rrrrr,rr+rrDrraddrrrr_decrefr_close)r-rr2rrrrAs  zBaseProxy._increfc Cs||j|dus |jtjkrz2td|j||j|d}t|dd|jfWqt y}ztd|WYd}~qd}~00ntd|j|st |drtdt j |j|`dS)Nz DECREF %rrr`z... decref failed %sz%DECREF %r -- manager already shutdownr z-thread %r has no more proxies so closing conn)discardr,rrrrrr+rDrrrnrrr r)rrhr2ZtlsZidsetrrrrrrr)Us $ zBaseProxy._decrefc CsJd|_z |Wn2tyD}ztd|WYd}~n d}~00dS)Nzincref failed: %s)rrrrr)r-rrrrrns  zBaseProxy._after_forkcCs^i}tdur|j|d<t|ddrB|j|d<tt|j|j|ffStt||j|j|ffSdS)Nrh_isautoFr) r rrr RebuildProxyrrrrr-rArrrrvs    zBaseProxy.__reduce__cCs|Sr)r&)r-memorrr __deepcopy__szBaseProxy.__deepcopy__cCsdt|j|jjt|fS)Nz<%s object, typeid %r at %#x>)rr5rr*r,r/rrrr6szBaseProxy.__repr__cCs8z |dWSty2t|dddYS0dS)Nr6r#z; '__str__()' failed>)r$rrr/rrrrNs  zBaseProxy.__str__)NNNTF)r5r7r8rrForkAwareThreadLockrr.r"r$r&rrr)rrr0r6rNrrrrrs  )   rcCsttdd}|rT|j|jkrTtd|d|d<|j|jvrT|j|j|j|j<| ddopttdd }|||fd|i|S)Nrxz*Rebuild a proxy owned by manager, token=%rTrr_Z _inheritingF) rrrwr+rrr,rmrkpop)rSrrqrArr_rrrr-s    r-cCsnt|}z|||fWSty(Yn0i}|D]}td||f|q2t|tf|}||_||||f<|S)NzOdef %s(self, /, *args, **kwds): return self._callmethod(%r, args, kwds))rrexecrrr)rr_cacheZdicmeth ProxyTyperrr MakeProxyTypes   r7c Cst|d}|durJ||j|d}zt|dd|f}W|n |0|dur`|dur`|j}|durrtj}td|j |} | ||||||d} d| _ | S)Nrrr[z AutoProxy[%s])rrhr_rT) rir+rDrrrrwrhr7r*r,) rrqrrhrr_rrrr6rrrrrs    rc@seZdZddZddZdS) NamespacecKs|j|dSr)rupdater.rrrr.szNamespace.__init__cCsZt|j}g}|D]$\}}|ds|d||fq|d|jjd|fS)NrUz%s=%rz%s(%s)z, ) r%rr" startswithrQrr4r5r)r-r"rRrrrrrr6s  zNamespace.__repr__N)r5r7r8r.r6rrrrr8sr8c@s8eZdZd ddZddZddZdd ZeeeZd S) ValueTcCs||_||_dSr) _typecode_value)r-rrlockrrrr.szValue.__init__cCs|jSrr=r/rrrrsz Value.getcCs ||_dSrr?r-rrrrrsz Value.setcCsdt|j|j|jfS)Nz %s(%r, %r))rr5r<r=r/rrrr6szValue.__repr__N)T) r5r7r8r.rrr6rrrrrrr;s  r;cCs t||Sr)r)rsequencer>rrrArraysrBc@s8eZdZdZddZddZddZdd Zd d Zd S) IteratorProxy)__next__r;throwrcCs|Srrr/rrr__iter__szIteratorProxy.__iter__cGs |d|S)NrDr%r-r@rrrrDszIteratorProxy.__next__cGs |d|S)Nr;r%rGrrrr;szIteratorProxy.sendcGs |d|S)NrEr%rGrrrrEszIteratorProxy.throwcGs |d|S)Nrr%rGrrrrszIteratorProxy.closeN) r5r7r8rrFrDr;rErrrrrrCs rCc@s2eZdZdZd ddZddZdd Zd d ZdS) AcquirerProxy)acquirereleaseTNcCs"|dur|fn||f}|d|SNrIr%)r-blockingrr@rrrrIszAcquirerProxy.acquirecCs |dSNrJr%r/rrrrJszAcquirerProxy.releasecCs |dSrKr%r/rrrrszAcquirerProxy.__enter__cCs |dSrMr%rrrrrszAcquirerProxy.__exit__)TN)r5r7r8rrIrJrrrrrrrH s  rHc@s6eZdZdZd ddZd ddZdd Zdd d ZdS)ConditionProxy)rIrJr~notify notify_allNcCs|d|fSNr~r%rrrrr~szConditionProxy.waitrcCs|d|fS)NrOr%)r-nrrrrOszConditionProxy.notifycCs |dS)NrPr%r/rrrrPszConditionProxy.notify_allcCsd|}|r|S|dur$t|}nd}d}|s`|durN|t}|dkrNq`|||}q,|S)Nr)time monotonicr~)r- predicaterrCendtimewaittimerrrwait_for!s  zConditionProxy.wait_for)N)r)N)r5r7r8rr~rOrPrXrrrrrNs   rNc@s2eZdZdZddZddZddZd d d ZdS) EventProxy)r}rrr~cCs |dS)Nr}r%r/rrrr}6szEventProxy.is_setcCs |dSNrr%r/rrrr8szEventProxy.setcCs |dS)Nrr%r/rrrr:szEventProxy.clearNcCs|d|fSrQr%rrrrr~<szEventProxy.wait)N)r5r7r8rr}rrr~rrrrrY4s rYc@sNeZdZdZdddZddZddZed d Zed d Z ed dZ dS) BarrierProxy)__getattribute__r~abortresetNcCs|d|fSrQr%rrrrr~BszBarrierProxy.waitcCs |dS)Nr]r%r/rrrr]DszBarrierProxy.abortcCs |dS)Nr^r%r/rrrr^FszBarrierProxy.resetcCs |ddS)Nr\)partiesr%r/rrrr_HszBarrierProxy.partiescCs |ddS)Nr\) n_waitingr%r/rrrr`KszBarrierProxy.n_waitingcCs |ddS)Nr\)brokenr%r/rrrraNszBarrierProxy.broken)N) r5r7r8rr~r]r^rr_r`rarrrrr[@s   r[c@s(eZdZdZddZddZddZdS) NamespaceProxy)r\ __setattr__ __delattr__cCs0|ddkrt||St|d}|d|fS)NrrUr$r\)objectr\r-r  callmethodrrr __getattr__Us   zNamespaceProxy.__getattr__cCs4|ddkrt|||St|d}|d||fS)NrrUr$rc)rercr\)r-r rrgrrrrcZs  zNamespaceProxy.__setattr__cCs0|ddkrt||St|d}|d|fS)NrrUr$rd)rerdr\rfrrrrd_s   zNamespaceProxy.__delattr__N)r5r7r8rrhrcrdrrrrrbSsrbc@s4eZdZdZddZddZeeeZee j Z dS) ValueProxy)rrcCs |dS)Nrr%r/rrrrhszValueProxy.getcCs|d|fSrZr%r@rrrrjszValueProxy.setN) r5r7r8rrrrrr types GenericAlias__class_getitem__rrrrrifs  ri BaseListProxy)__add__ __contains__ __delitem__ __getitem____len____mul__ __reversed____rmul__ __setitem__rQcountextendindexinsertr2removereverser__imul__c@seZdZddZddZdS) ListProxycCs|d|f|S)Nrxr%r@rrr__iadd__xszListProxy.__iadd__cCs|d|f|S)Nr}r%r@rrrr}{szListProxy.__imul__N)r5r7r8rr}rrrrr~wsr~ DictProxy)rorprqrFrrrvrrrr"r#r2popitem setdefaultr9r$rFIterator ArrayProxy)rrrqrv PoolProxy) Zapply apply_asyncrimapimap_unorderedrmap map_asyncstarmap starmap_asyncrZ AsyncResult)rrrrrc@seZdZddZddZdS)rcCs|Srrr/rrrrszPoolProxy.__enter__cCs |dSr)rrrrrrszPoolProxy.__exit__N)r5r7r8rrrrrrrsc@s eZdZdS)rN)r5r7r8rrrrrsrQueue JoinableQueueruroRLock SemaphoreBoundedSemaphore ConditionBarrierPoolr%r)rr )r c@sHeZdZgfddZddZddZddZd d Zd d Zd dZ dS)_SharedMemoryTrackercCs||_||_dSrZshared_memory_context_name segment_names)r-rrrrrr.sz_SharedMemoryTracker.__init__cCs(td|dt|j|dS)NzRegister segment  in pid )rrrrrQr- segment_namerrrregister_segmentsz%_SharedMemoryTracker.register_segmentcCsBtd|dt|j|t|}||dS)NzDestroy segment r) rrrrr{r SharedMemoryrunlink)r-rZsegmentrrrdestroy_segments   z$_SharedMemoryTracker.destroy_segmentcCs"|jddD]}||qdSr)rrrrrrrsz_SharedMemoryTracker.unlinkcCs(td|jjdt|dS)NzCall z .__del__ in )rrr4r5rrr/rrr__del__sz_SharedMemoryTracker.__del__cCs |j|jfSrrr/rrrr0sz!_SharedMemoryTracker.__getstate__cCs|j|dSr)r.r1rrrr3sz!_SharedMemoryTracker.__setstate__N) r5r7r8r.rrrrr0r3rrrrrs  rc@sJeZdZejgdZddZddZddZdd Zd d Z d d Z dS)SharedMemoryServer) track_segmentrelease_segment list_segmentscOs`tj|g|Ri||j}t|tr2t|}td|dt|_ t dtdS)NZshm_rUz"SharedMemoryServer started by pid ) rWr.r+rHreosfsdecoderrshared_memory_contextrr)r-r@kwargsr+rrrr.s  zSharedMemoryServer.__init__cOs:t|j|ddr|j|d<tj|||g|Ri|S)Nr#Z_shared_memory_proxyr)rrfrrWrY)r-r>r*r@rrrrrYs zSharedMemoryServer.createcCs|jt||Sr)rrrWrXrrrrrXs zSharedMemoryServer.shutdowncCs|j|dSr)rrr-r>rrrrr sz SharedMemoryServer.track_segmentcCs|j|dSr)rrrrrrrsz"SharedMemoryServer.release_segmentcCs|jjSr)rrrrrrrsz SharedMemoryServer.list_segmentsN) r5r7r8rWrr.rYrXrrrrrrrrs  rc@s8eZdZeZddZddZddZddZd d Z d S) rcOsTtjdkrddlm}|tj|g|Ri|t|j j dt dS)Nposixr)resource_trackerz created by pid ) rrrZensure_runningrr.rrr4r5r)r-r@rrrrrr.'s   zSharedMemoryManager.__init__cCst|jjdtdS)Nz.__del__ by pid )rrr4r5rr/rrrr3szSharedMemoryManager.__del__cCsh|jjtjkrP|jjtjkr&tdn*|jjtjkr>tdntd|jj||j |j |j |j S)Nz"Already started SharedMemoryServerz!SharedMemoryManager has shut downr) rrrrrr rrKrrrrrr/rrrr7s    zSharedMemoryManager.get_serverc Cs|j|j|jdh}tjdd|d}zt|dd|jfWn0tyj}z||WYd}~n d}~00Wdn1s0Y|S)NrT)rYsizer) rrrrrrDr BaseExceptionr)r-rrZsmsrrrrrDs8z SharedMemoryManager.SharedMemoryc Cs|j|j|jdf}t|}zt|dd|jjfWn2tyh}z|j |WYd}~n d}~00Wdn1s~0Y|S)Nrr) rrrr ShareableListrDZshmrrr)r-rArslrrrrrPs  8z!SharedMemoryManager.ShareableListN) r5r7r8rrr.rrrrrrrrrs     )NNNTF)T)U__all__rrnrrqueuerSrjrrrrrr contextr r r r rrrr ImportErrorZ HAS_SHMEMrQrr Z view_typesr%r(Z view_typererrDr=rrLrTrVrWrrrrs XmlListener XmlClientrirrrrr-r7rr8r;rBrCrHrNrYr[rbrirmr~rrrZ BasePoolProxyrrrrurorrrrrrrrrrrrrr s             H   w 4             %-