B  Wã X]`âã@sdddlZddlZddlZddlZddlZddlZddlmZmZm Z m Z m Z m Z m Z mZmZmZmZmZmZee e e eeehƒZyeWnek r iZYnXdd„ZGdd„deƒZeeefZdd„Zd d „Zd d „Z d d„Z!d%dd„Z"d&dd„Z#e#Z$d'dd„Z%Gdd„dƒZ&Gdd„de&ƒZ'dd„Z(d(dd„Z)ej*d kr`Gd!d"„d"ƒZ+Gd#d$„d$e&ƒZ,dS))éN) ÚEALREADYÚ EINPROGRESSÚ EWOULDBLOCKÚ ECONNRESETÚEINVALÚENOTCONNÚ ESHUTDOWNÚEISCONNÚEBADFÚ ECONNABORTEDÚEPIPEÚEAGAINÚ errorcodec Cs>y t |¡Stttfk r8|tkr0t|Sd|SXdS)NzUnknown error %s)ÚosÚstrerrorÚ ValueErrorÚ OverflowErrorÚ NameErrorr)Úerr©rú+/opt/alt/python37/lib/python3.7/asyncore.pyÚ _strerrorDs  rc@s eZdZdS)ÚExitNowN)Ú__name__Ú __module__Ú __qualname__rrrrrLsrcCs:y | ¡Wn(tk r"‚Yn| ¡YnXdS)N)Úhandle_read_eventÚ_reraised_exceptionsÚ handle_error)ÚobjrrrÚreadQs  r cCs:y | ¡Wn(tk r"‚Yn| ¡YnXdS)N)Úhandle_write_eventrr)rrrrÚwriteYs  r"cCs:y | ¡Wn(tk r"‚Yn| ¡YnXdS)N)Úhandle_expt_eventrr)rrrrÚ _exceptionas  r$c CsÆyX|tj@r| ¡|tj@r&| ¡|tj@r8| ¡|tjtjBtj B@rV|  ¡Wnht k rš}z$|j dt kr‚| ¡n|  ¡Wdd}~XYn(tk r®‚Yn| ¡YnXdS)Nr)ÚselectÚPOLLINrÚPOLLOUTr!ÚPOLLPRIr#ZPOLLHUPZPOLLERRZPOLLNVALÚ handle_closeÚOSErrorÚargsÚ _DISCONNECTEDrr)rÚflagsÚerrrÚ readwriteis"     r/çc CsL|dkr t}|rHg}g}g}x\t| ¡ƒD]L\}}| ¡}| ¡}|rR| |¡|rf|jsf| |¡|sn|r,| |¡q,Wg|krš|krš|kr¬nnt |¡dSt   ||||¡\}}}x(|D] }|  |¡}|dkràqÈt |ƒqÈWx*|D]"}|  |¡}|dkr qòt |ƒqòWx.|D]&}|  |¡}|dkr:qt |ƒqWdS)N)Ú socket_mapÚlistÚitemsÚreadableÚwritableÚappendÚ acceptingÚtimeZsleepr%Úgetr r"r$) ÚtimeoutÚmapÚrÚwr.ÚfdrZis_rZis_wrrrÚpoll}sD   "           r?cCsÈ|dkr t}|dk r t|dƒ}t ¡}|rÄx\t| ¡ƒD]L\}}d}| ¡r^|tjtjBO}|  ¡rv|j sv|tj O}|r:|  ||¡q:W| |¡}x.|D]&\}}|  |¡}|dkr¶qšt||ƒqšWdS)Nièr)r1Úintr%r?r2r3r4r&r(r5r7r'Úregisterr9r/)r:r;Zpollsterr>rr-r<rrrÚpoll2¤s(    rBç>@FcCsj|dkr t}|r ttdƒr t}nt}|dkrBx8|r>|||ƒq.Wn$x"|rd|dkrd|||ƒ|d}qDWdS)Nr?ré)r1Úhasattrr%rBr?)r:Zuse_pollr;ÚcountZpoll_funrrrÚloopÀs rGc@s6eZdZdZdZdZdZdZdZe dhƒZ dAdd„Z dd„Z e Z dBdd „ZdCd d „Zejejfd d „ZdDdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„ZdEd'd(„Z d)d*„Z!d+d,„Z"d-d.„Z#d/d0„Z$d1d2„Z%d3d4„Z&d5d6„Z'd7d8„Z(d9d:„Z)d;d<„Z*d=d>„Z+d?d@„Z,dS)FÚ dispatcherFNÚwarningc Cs |dkrt|_n||_d|_|r–| d¡| ||¡d|_y| ¡|_Wqœtk r’}z*|j dt t fkrvd|_n |  |¡‚Wdd}~XYqœXnd|_ dS)NrTF)r1Ú_mapÚ_filenoÚ setblockingÚ set_socketÚ connectedZ getpeernameÚaddrr*r+rrÚ del_channelÚsocket)ÚselfÚsockr;rrrrÚ__init__Üs    zdispatcher.__init__cCs˜|jjd|jjg}|jr.|jr.| d¡n|jr>| d¡|jdk r‚y| d|j¡Wn$tk r€| t|jƒ¡YnXdd  |¡t |ƒfS)NÚ.Z listeningrNz%s:%dz <%s at %#x>ú ) Ú __class__rrr7rOr6rNÚ TypeErrorÚreprÚjoinÚid)rRÚstatusrrrÚ__repr__üs    zdispatcher.__repr__cCs|dkr|j}|||j<dS)N)rJrK)rRr;rrrÚ add_channel szdispatcher.add_channelcCs,|j}|dkr|j}||kr"||=d|_dS)N)rKrJ)rRr;r>rrrrPs zdispatcher.del_channelcCs.||f|_t ||¡}| d¡| |¡dS)Nr)Zfamily_and_typerQrLrM)rRZfamilyÚtyperSrrrÚ create_sockets   zdispatcher.create_socketcCs||_| ¡|_| |¡dS)N)rQÚfilenorKr^)rRrSr;rrrrM s zdispatcher.set_socketcCsDy*|j tjtj|j tjtj¡dB¡Wntk r>YnXdS)NrD)rQZ setsockoptÚ SOL_SOCKETZ SO_REUSEADDRÚ getsockoptr*)rRrrrÚset_reuse_addr%s zdispatcher.set_reuse_addrcCsdS)NTr)rRrrrr46szdispatcher.readablecCsdS)NTr)rRrrrr59szdispatcher.writablecCs(d|_tjdkr|dkrd}|j |¡S)NTÚnté)r7rÚnamerQÚlisten)rRZnumrrrrh@szdispatcher.listencCs||_|j |¡S)N)rOrQÚbind)rRrOrrrriFszdispatcher.bindcCspd|_d|_|j |¡}|tttfks8|tkrBtj dkrB||_ dS|dt fkr^||_ |  ¡nt |t|ƒ‚dS)NFTrer)rNÚ connectingrQZ connect_exrrrrrrgrOr Úhandle_connect_eventr*r)rRZaddressrrrrÚconnectJs   zdispatcher.connectc Csny|j ¡\}}WnNtk r&dStk r`}z|jdtttfkrNdS‚Wdd}~XYn X||fSdS)Nr)rQÚacceptrXr*r+rr r )rRZconnrOÚwhyrrrrmXszdispatcher.acceptc Csfy|j |¡}|Stk r`}z2|jdtkr4dS|jdtkrN| ¡dS‚Wdd}~XYnXdS)Nr)rQÚsendr*r+rr,r))rRÚdataÚresultrnrrrrofs zdispatcher.sendc Cshy$|j |¡}|s| ¡dS|SWn>tk rb}z |jdtkrP| ¡dS‚Wdd}~XYnXdS)Nór)rQÚrecvr)r*r+r,)rRÚ buffer_sizerprnrrrrsss zdispatcher.recvc Csnd|_d|_d|_| ¡|jdk rjy|j ¡Wn6tk rh}z|jdtt fkrX‚Wdd}~XYnXdS)NFr) rNr7rjrPrQÚcloser*r+rr )rRrnrrrru…s zdispatcher.closecCstj dt|ƒ¡dS)Nzlog: %s )ÚsysÚstderrr"Ústr)rRÚmessagerrrÚlog•szdispatcher.logÚinfocCs||jkrtd||fƒdS)Nz%s: %s)Úignore_log_typesÚprint)rRryr_rrrÚlog_info˜s zdispatcher.log_infocCs:|jr| ¡n&|js.|jr$| ¡| ¡n| ¡dS)N)r7Ú handle_acceptrNrjrkÚ handle_read)rRrrrrœs  zdispatcher.handle_read_eventcCs@|j tjtj¡}|dkr(t|t|ƒƒ‚| ¡d|_d|_dS)NrTF) rQrcrbÚSO_ERRORr*rÚhandle_connectrNrj)rRrrrrrk¨s zdispatcher.handle_connect_eventcCs*|jr dS|js|jr| ¡| ¡dS)N)r7rNrjrkÚ handle_write)rRrrrr!°s zdispatcher.handle_write_eventcCs0|j tjtj¡}|dkr$| ¡n| ¡dS)Nr)rQrcrbrr)Ú handle_expt)rRrrrrr#»s zdispatcher.handle_expt_eventcCsXtƒ\}}}}y t|ƒ}Wndt|ƒ}YnX| d||||fd¡| ¡dS)Nz)<__repr__(self) failed for object at %0x>z:uncaptured python exception, closing channel %s (%s:%s %s)Úerror)Úcompact_tracebackrYr[r~r))rRZnilÚtÚvÚtbinfoZ self_reprrrrrÊs zdispatcher.handle_errorcCs| dd¡dS)Nz!unhandled incoming priority eventrI)r~)rRrrrr„Þszdispatcher.handle_exptcCs| dd¡dS)Nzunhandled read eventrI)r~)rRrrrr€ászdispatcher.handle_readcCs| dd¡dS)Nzunhandled write eventrI)r~)rRrrrrƒäszdispatcher.handle_writecCs| dd¡dS)Nzunhandled connect eventrI)r~)rRrrrr‚çszdispatcher.handle_connectcCs| ¡}|dk r|j|ŽdS)N)rmÚhandle_accepted)rRZpairrrrrêszdispatcher.handle_acceptcCs| ¡| dd¡dS)Nzunhandled accepted eventrI)rur~)rRrSrOrrrrŠïszdispatcher.handle_acceptedcCs| dd¡| ¡dS)Nzunhandled close eventrI)r~ru)rRrrrr)ós zdispatcher.handle_close)NN)N)N)N)r{)-rrrÚdebugrNr7rjÚclosingrOÚ frozensetr|rTr]Ú__str__r^rPrQZAF_INETZ SOCK_STREAMr`rMrdr4r5rhrirlrmrorsrurzr~rrkr!r#rr„r€rƒr‚rrŠr)rrrrrHÒsL          rHc@s6eZdZd dd„Zdd„Zdd„Zdd „Zd d „ZdS) Údispatcher_with_sendNcCst |||¡d|_dS)Nrr)rHrTÚ out_buffer)rRrSr;rrrrTþszdispatcher_with_send.__init__cCs.d}t ||jdd…¡}|j|d…|_dS)Nri)rHror)rRZnum_sentrrrÚ initiate_sendsz"dispatcher_with_send.initiate_sendcCs | ¡dS)N)r‘)rRrrrrƒsz!dispatcher_with_send.handle_writecCs|j pt|jƒS)N)rNÚlenr)rRrrrr5 szdispatcher_with_send.writablecCs0|jr| dt|ƒ¡|j||_| ¡dS)Nz sending %s)r‹r~rYrr‘)rRrprrrro s zdispatcher_with_send.send)NN)rrrrTr‘rƒr5rorrrrrüs  rcCs†t ¡\}}}g}|stdƒ‚x0|rN| |jjj|jjjt|j ƒf¡|j }q W~|d\}}}d  dd„|Dƒ¡}|||f|||fS)Nztraceback does not existéÿÿÿÿrVcSsg|] }d|‘qS)z [%s|%s|%s]r)Ú.0Úxrrrú (sz%compact_traceback..) rvÚexc_infoÚAssertionErrorr6Útb_frameÚf_codeÚ co_filenameÚco_namerxÚ tb_linenoÚtb_nextrZ)r‡rˆÚtbr‰ÚfileZfunctionÚliner{rrrr†s r†c Cs˜|dkr t}x~t| ¡ƒD]n}y | ¡Wqtk rb}z|jdtkrLn|sR‚Wdd}~XYqtk rv‚Yq|s‚‚YqXqW| ¡dS)Nr) r1r2Úvaluesrur*r+r rÚclear)r;Z ignore_allr•rrrÚ close_all+s   r¤Úposixc@sNeZdZdd„Zdd„Zdd„Zdd„Zdd d „ZeZeZ d d „Z dd„Z d S)Ú file_wrappercCst |¡|_dS)N)rÚdupr>)rRr>rrrrTPszfile_wrapper.__init__cCs*|jdkrtjd|t|d| ¡dS)Nrzunclosed file %r)Úsource)r>ÚwarningsÚwarnÚResourceWarningru)rRrrrÚ__del__Ss  zfile_wrapper.__del__cGstj|jf|žŽS)N)rr r>)rRr+rrrrsYszfile_wrapper.recvcGstj|jf|žŽS)N)rr"r>)rRr+rrrro\szfile_wrapper.sendNcCs(|tjkr|tjkr|sdStdƒ‚dS)Nrz-Only asyncore specific behaviour implemented.)rQrbrÚNotImplementedError)rRÚlevelZoptnameÚbuflenrrrrc_s   zfile_wrapper.getsockoptcCs(|jdkrdS|j}d|_t |¡dS)Nrr“)r>rru)rRr>rrrrujs  zfile_wrapper.closecCs|jS)N)r>)rRrrrraqszfile_wrapper.fileno)N) rrrrTr¬rsrorcr r"rurarrrrr¦Ks r¦c@seZdZddd„Zdd„ZdS)Úfile_dispatcherNcCsPt |d|¡d|_y | ¡}Wntk r4YnX| |¡t |d¡dS)NTF)rHrTrNraÚAttributeErrorÚset_filerÚ set_blocking)rRr>r;rrrrTvs  zfile_dispatcher.__init__cCs"t|ƒ|_|j ¡|_| ¡dS)N)r¦rQrarKr^)rRr>rrrr²s  zfile_dispatcher.set_file)N)rrrrTr²rrrrr°ts r°)r0N)r0N)rCFNN)NF)-r%rQrvr8r©rÚerrnorrrrrrrr r r r r rrr,r1rrÚ ExceptionrÚKeyboardInterruptÚ SystemExitrr r"r$r/r?rBZpoll3rGrHrr†r¤rgr¦r°rrrrÚ1s@<    '  ,  )