/usr/lib64/python3.9/multiprocessing/__pycache__
NameSizeModeActions
connection.cpython-39.opt-1.pyc254080644editdlrm
connection.cpython-39.opt-2.pyc234090644editdlrm
connection.cpython-39.pyc256150644editdlrm
context.cpython-39.opt-1.pyc130200644editdlrm
context.cpython-39.opt-2.pyc115600644editdlrm
context.cpython-39.pyc130200644editdlrm
forkserver.cpython-39.opt-1.pyc83710644editdlrm
forkserver.cpython-39.opt-2.pyc75840644editdlrm
forkserver.cpython-39.pyc84170644editdlrm
heap.cpython-39.opt-1.pyc76250644editdlrm
heap.cpython-39.opt-2.pyc74450644editdlrm
heap.cpython-39.pyc76350644editdlrm
managers.cpython-39.opt-1.pyc407120644editdlrm
managers.cpython-39.opt-2.pyc367350644editdlrm
managers.cpython-39.pyc409080644editdlrm
pool.cpython-39.opt-1.pyc250910644editdlrm
pool.cpython-39.opt-2.pyc232230644editdlrm
pool.cpython-39.pyc251380644editdlrm
popen_fork.cpython-39.opt-1.pyc25120644editdlrm
popen_fork.cpython-39.opt-2.pyc25120644editdlrm
popen_fork.cpython-39.pyc25120644editdlrm
popen_forkserver.cpython-39.opt-1.pyc24450644editdlrm
popen_forkserver.cpython-39.opt-2.pyc24450644editdlrm
popen_forkserver.cpython-39.pyc24450644editdlrm
popen_spawn_posix.cpython-39.opt-1.pyc23480644editdlrm
popen_spawn_posix.cpython-39.opt-2.pyc23480644editdlrm
popen_spawn_posix.cpython-39.pyc23480644editdlrm
popen_spawn_win32.cpython-39.opt-1.pyc34360644editdlrm
popen_spawn_win32.cpython-39.opt-2.pyc33550644editdlrm
popen_spawn_win32.cpython-39.pyc34570644editdlrm
process.cpython-39.opt-1.pyc104000644editdlrm
process.cpython-39.opt-2.pyc89520644editdlrm
process.cpython-39.pyc110090644editdlrm
queues.cpython-39.opt-1.pyc101170644editdlrm
queues.cpython-39.opt-2.pyc99630644editdlrm
queues.cpython-39.pyc101760644editdlrm
reduction.cpython-39.opt-1.pyc82850644editdlrm
reduction.cpython-39.opt-2.pyc75450644editdlrm
reduction.cpython-39.pyc82850644editdlrm
resource_sharer.cpython-39.opt-1.pyc52410644editdlrm
resource_sharer.cpython-39.opt-2.pyc48210644editdlrm
resource_sharer.cpython-39.pyc52840644editdlrm
resource_tracker.cpython-39.opt-1.pyc53880644editdlrm
resource_tracker.cpython-39.opt-2.pyc50280644editdlrm
resource_tracker.cpython-39.pyc54570644editdlrm
sharedctypes.cpython-39.opt-1.pyc70480644editdlrm
sharedctypes.cpython-39.opt-2.pyc67840644editdlrm
sharedctypes.cpython-39.pyc70970644editdlrm
shared_memory.cpython-39.opt-1.pyc142320644editdlrm
shared_memory.cpython-39.opt-2.pyc115000644editdlrm
shared_memory.cpython-39.pyc144420644editdlrm
spawn.cpython-39.opt-1.pyc66780644editdlrm
spawn.cpython-39.opt-2.pyc62010644editdlrm
spawn.cpython-39.pyc67210644editdlrm
synchronize.cpython-39.opt-1.pyc110870644editdlrm
synchronize.cpython-39.opt-2.pyc110870644editdlrm
synchronize.cpython-39.pyc113880644editdlrm
util.cpython-39.opt-1.pyc114700644editdlrm
util.cpython-39.opt-2.pyc106500644editdlrm
util.cpython-39.pyc115060644editdlrm
__init__.cpython-39.opt-1.pyc6540644editdlrm
__init__.cpython-39.opt-2.pyc6540644editdlrm
__init__.cpython-39.pyc6540644editdlrm
Edit: /usr/lib64/python3.9/multiprocessing/__pycache__/connection.cpython-39.pyc (25615B)
a à”|jp|ã@sgd¢ZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl m Z ddl m Z m Z ddlmZejZz$ddlZddlmZmZmZmZWn"eyÄejdkr¼‚dZYn0d Zd Zd Ze ¡Zd Zd gZe ed ƒrüd Zed g7Zejdk�rdZedg7Zefdd„Z!dd„Z"dd„Z#dd„Z$dd„Z%Gdd„dƒZ&e�rfGdd„de&ƒZ'Gdd„de&ƒZ(Gdd „d e)ƒZ*dQd!d"„Z+ejdk�r¨dRd$d%„Z,n dSd&d%„Z,Gd'd(„d(e)ƒZ-d)d*„Z.ejdk�rîGd+d,„d,e)ƒZ/d-d.„Z0d/Z1d0Z2d1Z3d2Z4d3d4„Z5d5d6„Z6Gd7d8„d8e)ƒZ7d9d:„Z8d;d<„Z9Gd=d>„d>e*ƒZ:d?d@„Z;ejdk�rrdAdB„ZhZ?dTdCdD„Z@n,ddlAZAe eAdEƒ�rŽeAjBZCneAjDZCdUdFdD„Z@ejdk�rädGdH„ZEdIdJ„ZFe Ge(eE¡dKdL„ZHdMdN„ZIe Ge'eH¡ndOdH„ZEdPdJ„ZFe Ge(eE¡dS)V)ÚClientÚListenerÚPipeÚwaitéNé)Úutil)ÚAuthenticationErrorÚBufferTooShort)Ú reduction)Ú WAIT_OBJECT_0ÚWAIT_ABANDONED_0Ú WAIT_TIMEOUTÚINFINITEÚwin32i g4@Úsha256ÚAF_INETÚAF_UNIXÚAF_PIPEcCs t ¡|S©N©ÚtimeÚ monotonic)Útimeout©rú2/usr/lib64/python3.9/multiprocessing/connection.pyÚ _init_timeout?srcCs t ¡|kSrr)ÚtrrrÚ_check_timeoutBsrcCsX|dkr dS|dkr&tjdt ¡d�S|dkrLtjdt ¡ttƒfdd�Std ƒ‚d S) z? Return an arbitrary free address for the given family r)Ú localhostrrz listener-)ÚprefixÚdirrz\\.\pipe\pyc-%d-%d-Úzunrecognized familyN) ÚtempfileÚmktemprÚ get_temp_dirÚosÚgetpidÚnextÚ _mmap_counterÚ ValueError©ÚfamilyrrrÚarbitrary_addressIsÿÿr,cCsJtjdkr|dkrtd|ƒ‚tjdkrF|dkrFtt|ƒsFtd|ƒ‚dS)zD Checks if the family is valid for the current environment. rrzFamily %s is not recognized.rN)ÚsysÚplatformr)ÚhasattrÚsocketr*rrrÚ_validate_familyWs   r1cCsTt|ƒtkrdSt|ƒtur*| d¡r*dSt|ƒtus@t |¡rDdStd|ƒ‚dS)z] Return the types of the address This can be 'AF_INET', 'AF_UNIX', or 'AF_PIPE' rz\\rrzaddress type of %r unrecognizedN)ÚtypeÚtupleÚstrÚ startswithrÚis_abstract_socket_namespacer))ÚaddressrrrÚ address_typecs r8c@s¾eZdZdZd+dd„Zdd„Zdd„Zd d „Zd d „Zd d„Z e dd„ƒZ e dd„ƒZ e dd„ƒZ dd„Zdd„Zd,dd„Zdd„Zd-dd„Zd.d d!„Zd"d#„Zd/d%d&„Zd'd(„Zd)d*„ZdS)0Ú_ConnectionBaseNTcCs>| ¡}|dkrtdƒ‚|s(|s(tdƒ‚||_||_||_dS)Nrzinvalid handlez6at least one of `readable` and `writable` must be True)Ú __index__r)Ú_handleÚ _readableÚ _writable)ÚselfÚhandleÚreadableÚwritablerrrÚ__init__ysÿz_ConnectionBase.__init__cCs|jdur| ¡dSr©r;Ú_close©r>rrrÚ__del__†s z_ConnectionBase.__del__cCs|jdurtdƒ‚dS)Nzhandle is closed)r;ÚOSErrorrErrrÚ _check_closedŠs z_ConnectionBase._check_closedcCs|jstdƒ‚dS)Nzconnection is write-only)r<rGrErrrÚ_check_readableŽsz_ConnectionBase._check_readablecCs|jstdƒ‚dS)Nzconnection is read-only)r=rGrErrrÚ_check_writable’sz_ConnectionBase._check_writablecCs"|jrd|_n| ¡tdƒ‚dS)NFzbad message length)r=r<ÚcloserGrErrrÚ_bad_message_length–sz#_ConnectionBase._bad_message_lengthcCs |jduS)z True if the connection is closedN©r;rErrrÚclosed�sz_ConnectionBase.closedcCs|jS)z"True if the connection is readable)r<rErrrr@¢sz_ConnectionBase.readablecCs|jS)z"True if the connection is writable)r=rErrrrA§sz_ConnectionBase.writablecCs| ¡|jS)z+File descriptor or handle of the connection)rHr;rErrrÚfileno¬sz_ConnectionBase.filenocCs*|jdur&z| ¡Wd|_nd|_0dS)zClose the connectionNrCrErrrrK±s  z_ConnectionBase.closercCs¨| ¡| ¡t|ƒ}|jdkr.tt|ƒƒ}t|ƒ}|dkrFtdƒ‚||krVtdƒ‚|durh||}n&|dkrztdƒ‚n|||krŽtdƒ‚| ||||…¡dS)z,Send the bytes data from a bytes-like objectrrzoffset is negativezbuffer length < offsetNzsize is negativezbuffer length < offset + size)rHrJÚ memoryviewÚitemsizeÚbytesÚlenr)Ú _send_bytes)r>ÚbufÚoffsetÚsizeÚmÚnrrrÚ send_bytes¹s"     z_ConnectionBase.send_bytescCs$| ¡| ¡| t |¡¡dS)zSend a (picklable) objectN)rHrJrTÚ_ForkingPicklerÚdumps©r>ÚobjrrrÚsendÎsz_ConnectionBase.sendcCsJ| ¡| ¡|dur(|dkr(tdƒ‚| |¡}|durB| ¡| ¡S)z7 Receive bytes data as a bytes object. Nrznegative maxlength)rHrIr)Ú _recv_bytesrLÚgetvalue)r>Ú maxlengthrUrrrÚ recv_bytesÔs z_ConnectionBase.recv_bytescCsÄ| ¡| ¡t|ƒ�˜}|j}|t|ƒ}|dkr>tdƒ‚n||krNtdƒ‚| ¡}| ¡}|||krvt|  ¡ƒ‚|  d¡|  ||||||…¡|WdƒS1s¶0YdS)zq Receive bytes data into a writeable bytes-like object. Return the number of bytes read. rznegative offsetzoffset too largeN) rHrIrPrQrSr)r`Útellr raÚseekÚreadinto)r>rUrVrXrQÚbytesizeÚresultrWrrrÚrecv_bytes_intoás$        ÿz_ConnectionBase.recv_bytes_intocCs&| ¡| ¡| ¡}t | ¡¡S)zReceive a (picklable) object)rHrIr`r[ÚloadsÚ getbuffer)r>rUrrrÚrecvúsz_ConnectionBase.recvçcCs| ¡| ¡| |¡S)z/Whether there is any input available to be read)rHrIÚ_poll©r>rrrrÚpollsz_ConnectionBase.pollcCs|SrrrErrrÚ __enter__sz_ConnectionBase.__enter__cCs | ¡dSr©rK©r>Úexc_typeÚ exc_valueÚexc_tbrrrÚ__exit__ sz_ConnectionBase.__exit__)TT)rN)N)r)rm)Ú__name__Ú __module__Ú __qualname__r;rBrFrHrIrJrLÚpropertyrNr@rArOrKrZr_rcrirlrprqrwrrrrr9vs.       r9c@sDeZdZdZdZejfdd„Zdd„Zddd „Z d d „Z d d „Z dS)ÚPipeConnectionzª Connection class based on a Windows named pipe. Overlapped I/O is used, so the handles must have been created with FILE_FLAG_OVERLAPPED. FcCs||jƒdSrrM)r>Z _CloseHandlerrrrDszPipeConnection._closec Csžtj|j|dd�\}}zVz,|tjkrBt |jgdt¡}|tksBJ‚Wn| ¡‚Yn0W|  d¡\}}n|  d¡\}}0|dksŠJ‚|t |ƒksšJ‚dS)NT©Ú overlappedFr) Ú_winapiZ WriteFiler;ÚERROR_IO_PENDINGÚWaitForMultipleObjectsÚeventrr ÚcancelÚGetOverlappedResultrS)r>rUÚovÚerrÚwaitresZnwrittenrrrrTs  ÿ   zPipeConnection._send_bytesNc CsŒ|jrd|_t ¡S|dur dnt|dƒ}�ztj|j|dd�\}}z’z,|tjkrpt |j gdt ¡}|t kspJ‚Wn|  ¡‚Yn0W|  d¡\}}|dkr¾t ¡}| | ¡¡|WS|tjkrÖ| ||¡WSnh|  d¡\}}|dk�rt ¡}| | ¡¡|YWS|tjk�r>| ||¡YWS0Wn<t�y~}z"|jtjk�rht‚n‚WYd}~n d}~00tdƒ‚dS)NFé€Tr}rz.shouldn't get here; expected KeyboardInterrupt)Ú_got_empty_messageÚioÚBytesIOÚminrÚReadFiler;r€r�r‚rr rƒr„ÚwriterkZERROR_MORE_DATAÚ_get_more_datarGÚwinerrorÚERROR_BROKEN_PIPEÚEOFErrorÚ RuntimeError) r>ÚmaxsizeZbsizer…r†r‡ZnreadÚfÚerrrr`*sH ÿ   ÿ  ú   zPipeConnection._recv_bytescCs.|jst |j¡ddkrdStt|g|ƒƒS)NrT)r‰rÚ PeekNamedPiper;ÚboolrrorrrrnJs ÿzPipeConnection._pollcCs¤| ¡}t ¡}| |¡t |j¡d}|dks6J‚|durVt|ƒ||krV| ¡tj |j|dd�\}}|  d¡\}}|dks†J‚||ks’J‚| | ¡¡|S)NrrTr}) rkrŠr‹rŽrr—r;rSrLr�r„)r>r…r”rUr•Úleftr†Zrbytesrrrr�Ps    zPipeConnection._get_more_data)N) rxryrzÚ__doc__r‰rÚ CloseHandlerDrTr`rnr�rrrrr|s r|c@s|eZdZdZer,ejfdd„ZejZ ej Z ne j fdd„Ze jZ e jZ e fdd„Ze fdd„Zd d „Zdd d „Zdd„Zd S)Ú Connectionzo Connection class based on an arbitrary file descriptor (Unix only), or a socket handle (Windows). cCs||jƒdSrrM©r>rDrrrrDgszConnection._closecCs||jƒdSrrMr�rrrrDlscCs8t|ƒ}||j|ƒ}||8}|dkr&q4||d…}qdS©Nr)rSr;)r>rUrŽÚ remainingrYrrrÚ_sendqs  zConnection._sendcCsbt ¡}|j}|}|dkr^|||ƒ}t|ƒ}|dkrJ||krBt‚ntdƒ‚| |¡||8}q|S)Nrzgot end of file during message)rŠr‹r;rSr’rGrŽ)r>rWÚreadrUr?rŸÚchunkrYrrrÚ_recvzs   zConnection._recvcCs„t|ƒ}|dkrHt dd¡}t d|¡}| |¡| |¡| |¡n8t d|¡}|dkrr| |¡| |¡n| ||¡dS)Niÿÿÿú!iéÿÿÿÿú!Qi@)rSÚstructÚpackr )r>rUrYÚ pre_headerÚheaderrrrrTŠs        zConnection._send_bytesNcCs^| d¡}t d| ¡¡\}|dkr@| d¡}t d| ¡¡\}|durT||krTdS| |¡S)Nér¤r¥ér¦)r£r§Úunpackra)r>r”rUrWrrrr`¡s  zConnection._recv_bytescCst|g|ƒ}t|ƒSr)rr˜)r>rÚrrrrrn«s zConnection._poll)N)rxryrzršrÚ_multiprocessingZ closesocketrDr_Ú_writerlÚ_readr%rKrŽr¡r r£rTr`rnrrrrrœ`s  rœc@sReZdZdZddd„Zdd„Zdd „Zed d „ƒZed d „ƒZ dd„Z dd„Z dS)rz• Returns a listener object. This is a wrapper for a bound socket which is 'listening' for connections, or for a Windows named pipe. NrcCsp|p|rt|ƒpt}|pt|ƒ}t|ƒ|dkr>t||ƒ|_nt|||ƒ|_|durft|tƒsft dƒ‚||_ dS)Nrúauthkey should be a byte string) r8Údefault_familyr,r1Ú PipeListenerÚ _listenerÚSocketListenerÚ isinstancerRÚ TypeErrorÚ_authkey)r>r7r+ÚbacklogÚauthkeyrrrrB»sÿ zListener.__init__cCs>|jdurtdƒ‚|j ¡}|jr:t||jƒt||jƒ|S)zz Accept a connection on the bound socket or named pipe of `self`. Returns a `Connection` object. Nzlistener is closed)rµrGÚacceptr¹Údeliver_challengeÚanswer_challenge)r>Úcrrrr¼Ës    zListener.acceptcCs |j}|durd|_| ¡dS)zA Close the bound socket or named pipe of `self`. N)rµrK)r>ÚlistenerrrrrKÙszListener.closecCs|jjSr)rµÚ_addressrErrrr7âszListener.addresscCs|jjSr)rµÚ_last_acceptedrErrrÚ last_acceptedæszListener.last_acceptedcCs|SrrrErrrrqêszListener.__enter__cCs | ¡dSrrrrsrrrrwíszListener.__exit__)NNrN) rxryrzršrBr¼rKr{r7rÃrqrwrrrrr´s    rcCsh|p t|ƒ}t|ƒ|dkr&t|ƒ}nt|ƒ}|durHt|tƒsHtdƒ‚|durdt||ƒt||ƒ|S)z= Returns a connection to the address of a `Listener` rNr²) r8r1Ú PipeClientÚ SocketClientr·rRr¸r¾r½)r7r+r»r¿rrrrñs    rTcCsj|r>t ¡\}}| d¡| d¡t| ¡ƒ}t| ¡ƒ}n$t ¡\}}t|dd�}t|dd�}||fS)úL Returns pair of connection objects at either end of a pipe TF©rA©r@)r0Ú socketpairÚ setblockingrœÚdetachr%Úpipe)ÚduplexÚs1Ús2Úc1Úc2Úfd1Úfd2rrrrs       rc Csîtdƒ}|r*tj}tjtjB}tt}}ntj}tj}dt}}t ||tjBtj Btj tj Btj Bd||tj tj¡}t ||dtjtjtjtj¡}t |tj dd¡tj|dd�}| d¡\} } | dksÎJ‚t||d�} t||d�} | | fS) rÆrrrNTr}rÇrÈ)r,rÚPIPE_ACCESS_DUPLEXÚ GENERIC_READÚ GENERIC_WRITEÚBUFSIZEZPIPE_ACCESS_INBOUNDÚCreateNamedPipeÚFILE_FLAG_OVERLAPPEDÚFILE_FLAG_FIRST_PIPE_INSTANCEÚPIPE_TYPE_MESSAGEÚPIPE_READMODE_MESSAGEÚ PIPE_WAITÚNMPWAIT_WAIT_FOREVERÚNULLÚ CreateFileÚ OPEN_EXISTINGÚSetNamedPipeHandleStateÚConnectNamedPiper„r|) rÍr7ZopenmodeÚaccessZobsizeZibsizeZh1Zh2r~Ú_r†rÐrÑrrrrs>    ÿ ÿ ù þ ÿ   c@s*eZdZdZd dd„Zdd„Zdd„Zd S) r¶zO Representation of a socket which is bound to an address and listening rcCsÆt tt|ƒ¡|_zRtjdkr2|j tjtjd¡|j d¡|j  |¡|j  |¡|j  ¡|_ Wnt y‚|j ¡‚Yn0||_d|_|dkr¼t |¡s¼tj|tj|fdd�|_nd|_dS)NÚposixrTrr©ÚargsÚ exitpriority)r0ÚgetattrÚ_socketr%ÚnameÚ setsockoptÚ SOL_SOCKETÚ SO_REUSEADDRrÊÚbindÚlistenÚ getsocknamerÁrGrKÚ_familyrÂrr6ÚFinalizeÚunlinkÚ_unlink)r>r7r+rºrrrrBKs(  ÿ      ÿ zSocketListener.__init__cCs&|j ¡\}|_| d¡t| ¡ƒS)NT)rër¼rÂrÊrœrË©r>Úsrrrr¼ds zSocketListener.acceptcCsJz(|j ¡W|j}|durFd|_|ƒn|j}|durDd|_|ƒ0dSr)rërKrö)r>rõrrrrKis ýzSocketListener.closeN)r)rxryrzršrBr¼rKrrrrr¶Gs r¶cCs\t|ƒ}t tt|ƒ¡�0}| d¡| |¡t| ¡ƒWdƒS1sN0YdS)zO Return a connection object connected to the socket given by `address` TN)r8r0rêrÊÚconnectrœrË)r7r+rørrrrÅss   rÅc@s8eZdZdZd dd„Zd dd„Zdd „Zed d „ƒZdS)r´z0 Representation of a named pipe NcCsL||_|jdd�g|_d|_t d|j¡tj|tj|j|jfdd�|_ dS)NT)Úfirstz listener created with address=%rrrç) rÁÚ _new_handleÚ _handle_queuerÂrÚ sub_debugrôr´Ú_finalize_pipe_listenerrK)r>r7rºrrrrB‡s þzPipeListener.__init__Fc CsHtjtjB}|r|tjO}t |j|tjtjBtjBtj t t tj tj ¡Sr) rrÔrÙrÚrØrÁrÛrÜrÝZPIPE_UNLIMITED_INSTANCESr×rÞrß)r>rúÚflagsrrrrû’s   ÿûzPipeListener._new_handlec CsÞ|j | ¡¡|j d¡}ztj|dd�}Wn2ty`}z|jtjkrL‚WYd}~n~d}~00zVzt  |j gdt ¡}Wn |  ¡t  |¡‚Yn0W| d¡\}}|dksÖJ‚n| d¡\}}|dksÔJ‚0t|ƒS)NrTr}F)rüÚappendrûÚpoprrãrGr�Z ERROR_NO_DATAr�r‚rrƒr›r„r|)r>r?r…r–Úresrår†rrrr¼žs(   ÿ  ÿzPipeListener.acceptcCs$t d|¡|D]}t |¡qdS)Nz closing listener with address=%r)rrýrr›)Úqueuer7r?rrrrþµs z$PipeListener._finalize_pipe_listener)N)F) rxryrzršrBrûr¼Ú staticmethodrþrrrrr´ƒs  r´c Csžtƒ}z6t |d¡t |tjtjBdtjtjtjtj¡}Wq„t y|}z(|j tj tj fvsft |ƒrh‚WYd}~qd}~00q„q‚t |tjdd¡t|ƒS)zU Return a connection object connected to the pipe given by `address` éèrN)rrZ WaitNamedPiperàrÕrÖrßrárÙrGr�ZERROR_SEM_TIMEOUTZERROR_PIPE_BUSYrrârÜr|)r7rÚhr–rrrrÄ»s*   ýÿÿ ÿrÄés #CHALLENGE#s #WELCOME#s #FAILURE#cCs‚ddl}t|tƒs$td t|ƒ¡ƒ‚t t¡}|  t |¡|  ||t ¡  ¡}| d¡}||krl|  t¡n|  t¡tdƒ‚dS)Nrú Authkey must be bytes, not {0!s}ézdigest received was wrong)Úhmacr·rRr)Úformatr2r%ÚurandomÚMESSAGE_LENGTHrZÚ CHALLENGEÚnewÚHMAC_DIGEST_NAMEÚdigestrcÚWELCOMEÚFAILUREr©Ú connectionr»r ÚmessagerÚresponserrrr½às  ÿ    r½cCs˜ddl}t|tƒs$td t|ƒ¡ƒ‚| d¡}|dttƒ…tksNJd|ƒ‚|ttƒd…}|  ||t ¡  ¡}|  |¡| d¡}|t kr”tdƒ‚dS)Nrrr z message = %rzdigest sent was rejected)r r·rRr)r r2rcrSrrrrrZrrrrrrr¾ïs  ÿ    r¾c@s$eZdZdd„Zdd„Zdd„ZdS)ÚConnectionWrappercCs6||_||_||_dD]}t||ƒ}t|||ƒqdS)N)rOrKrprcrZ)Ú_connÚ_dumpsÚ_loadsrêÚsetattr)r>Úconnr\rjÚattrr^rrrrBs  zConnectionWrapper.__init__cCs| |¡}|j |¡dSr)rrrZ)r>r^rørrrr_ s zConnectionWrapper.sendcCs|j ¡}| |¡Sr)rrcrr÷rrrrl s zConnectionWrapper.recvN)rxryrzrBr_rlrrrrrsrcCst |fdddd¡ d¡S)Nrúutf-8)Ú xmlrpclibr\Úencode)r^rrrÚ _xml_dumpssr"cCst | d¡¡\\}}|S)Nr)r rjÚdecode)rør^ÚmethodrrrÚ _xml_loadssr%c@seZdZdd„ZdS)Ú XmlListenercCs"ddlmat |¡}t|ttƒSrž)Ú xmlrpc.clientÚclientr rr¼rr"r%r]rrrr¼s  zXmlListener.acceptN)rxryrzr¼rrrrr&sr&cOs"ddlmatt|i|¤ŽttƒSrž)r'r(r rrr"r%)rèÚkwdsrrrÚ XmlClients r*cCs®t|ƒ}g}|rªt |d|¡}|tkr*qªn\t|krFtt|ƒkrTnn |t8}n2t|krptt|ƒkr~nn |t8}ntdƒ‚| ||¡||dd…}d}q |S)NFzShould not get hererr) Úlistrr�r r rSr r“r)ZhandlesrÚLÚreadyrrrrÚ_exhaustive_wait)s    r.c s |durt}n|dkrd}nt|ddƒ}t|ƒ}i‰g}tƒ‰tƒ}�zê|D�](}zt|dƒ}Wnty‚|ˆ| ¡<YqP0zt |ƒdd¡\}}Wn:t yÖ}z"d|j }}|t vr‚WYd}~n d}~00|tj krø|  |¡|ˆ|j<qP|�rlt ¡dd…dk�rlz| d ¡\} }Wn,t �yR}z|j }WYd}~n d}~00|�slt|d ƒ�rld|_ˆ |¡d}qPtˆ ¡|ƒ}W|D]}| ¡�q�|D]Ž}z| d¡\} }Wn8t �yò}z|j }|t v�rÞ‚WYd}~n d}~00|tjk�r¤ˆ|j}ˆ |¡|dk�r¤t|d ƒ�r¤d|_�q¤nª|D]}| ¡�q:|D]Ž}z| d¡\} }Wn8t �yœ}z|j }|t v�rˆ‚WYd}~n d}~00|tjk�rNˆ|j}ˆ |¡|dk�rNt|d ƒ�rNd|_�qN0ˆ ‡fd d „|Dƒ¡‡fd d„|DƒS)ú— Wait till an object in object_list is ready/readable. Returns list of those objects in object_list which are ready/readable. Nrrgà?rOTé)ér0Fr‰c3s|]}ˆ|VqdSrr)Ú.0r)Úwaithandle_to_objrrÚ Šózwait..csg|]}|ˆvr|‘qSrr)r2Úo)Ú ready_objectsrrÚ ‹r5úwait..)rÚintr+ÚsetrêÚAttributeErrorr:rr�rGr�Ú _ready_errorsr€rr‚r-Úgetwindowsversionr„r/r‰Úaddr.ÚkeysrƒZERROR_OPERATION_ABORTEDÚupdate) Ú object_listrZov_listZ ready_handlesr6rOr…r†r–rår)r7r3rr?s†               î        rÚ PollSelectorcCs°tƒ�–}|D]}| |tj¡q |dur4t ¡|}| |¡}|r^dd„|DƒWdƒS|dur4|t ¡}|dkr4|WdƒSq4Wdƒn1s¢0YdS)r/NcSsg|]\}}|j‘qSr)Úfileobj)r2ÚkeyÚeventsrrrr8©r5r9r)Ú _WaitSelectorÚregisterÚ selectorsÚ EVENT_READrrÚselect)rBrÚselectorr^Údeadliner-rrrr™s   cCsf| ¡}t |tjtj¡�8}ddlm}| |¡}t||j |j ffWdƒS1sX0YdS)Nr)Úresource_sharer) rOr0ÚfromfdrÚ SOCK_STREAMr!rNZ DupSocketÚrebuild_connectionr@rA)rr?rørNÚdsrrrÚreduce_connectionµs   rScCs| ¡}t| ¡||ƒSr©rËrœ)rRr@rAÚsockrrrrQ»srQcCsB|jr tjnd|jrtjndB}t | ¡|¡}t||j|jffSrž) r@rZFILE_GENERIC_READrAZFILE_GENERIC_WRITEr Z DupHandlerOÚrebuild_pipe_connection)rräÚdhrrrÚreduce_pipe_connectionÀs ÿrXcCs| ¡}t|||ƒSr)rËr|)rWr@rAr?rrrrVÅsrVcCs t | ¡¡}t||j|jffSr)r ÚDupFdrOrQr@rA)rÚdfrrrrSËscCs| ¡}t|||ƒSrrT)rZr@rAÚfdrrrrQÎs)NN)T)T)N)N)JÚ__all__rŠr%r-r0r§rr"Ú itertoolsr¯r!rrr Úcontextr ÚForkingPicklerr[rr r r rÚ ImportErrorr.r×ÚCONNECTION_TIMEOUTrÚcountr(r³Úfamiliesr/rrr,r1r8r9r|rœÚobjectrrrr¶rÅr´rÄr rrrr½r¾rr"r%r&r*r.r‘ZERROR_NETNAME_DELETEDr=rrIrCrGÚSelectSelectorrSrQrHrXrVrrrrÚ s¤           PT=    ,, 8   P