JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrB YI~dN@sdddlZddlZddlZddlZddlZddlZddlmZmZm Z m Z m Z m Z m Z mZmZmZmZmZmZee e e eeehZyeWnek riZYnXddZGdddeZeeefZddZd d Zd d Z d dZ!d%ddZ"d&ddZ#e#Z$d'ddZ%GdddZ&Gddde&Z'ddZ(d(ddZ)ej*d kr`Gd!d"d"Z+Gd#d$d$e&Z,dS))N) EALREADY EINPROGRESS EWOULDBLOCK ECONNRESETEINVALENOTCONN ESHUTDOWNEISCONNEBADF ECONNABORTEDEPIPEEAGAIN errorcodec Cs>y t|Stttfk r8|tkr0t|Sd|SXdS)NzUnknown error %s)osstrerror ValueError OverflowError NameErrorr)errr-/opt/alt/python37/lib64/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)objrrrreadQs  r cCs:y |Wn(tk r"Yn|YnXdS)N)handle_write_eventrr)rrrrwriteYs  r"cCs:y |Wn(tk r"Yn|YnXdS)N)handle_expt_eventrr)rrrr _exceptionas  r$c CsyX|tj@r||tj@r&||tj@r8||tjtjBtj B@rV| Wnht k r}z$|j dt kr|n| Wdd}~XYn(tk rYn|YnXdS)Nr)selectPOLLINrPOLLOUTr!POLLPRIr#ZPOLLHUPZPOLLERRZPOLLNVAL handle_closeOSErrorargs _DISCONNECTEDrr)rflagserrr readwriteis"     r/c CsL|dkr t}|rHg}g}g}x\t|D]L\}}|}|}|rR|||rf|jsf|||sn|r,||q,Wg|kr|kr|krnnt|dSt ||||\}}}x(|D] }| |}|dkrqt |qWx*|D]"}| |}|dkr qt |qWx.|D]&}| |}|dkr:qt |qWdS)N) socket_maplistitemsreadablewritableappend acceptingtimeZsleepr%getr r"r$) timeoutmaprwr.fdrZis_rZis_wrrrpoll}sD   "           r?cCs|dkr t}|dk r t|d}t}|rx\t|D]L\}}d}|r^|tjtjBO}| rv|j sv|tj O}|r:| ||q:W||}x.|D]&\}}| |}|dkrqt||qWdS)Nir)r1intr%r?r2r3r4r&r(r5r7r'registerr9r/)r:r;Zpollsterr>rr-r<rrrpoll2s(    rB>@FcCsj|dkr t}|r ttdr t}nt}|dkrBx8|r>|||q.Wn$x"|rd|dkrd||||d}qDWdS)Nr?r)r1hasattrr%rBr?)r:Zuse_pollr;countZpoll_funrrrloops rGc@s6eZdZdZdZdZdZdZdZe dhZ dAddZ ddZ e Z dBdd ZdCd d Zejejfd d ZdDddZddZddZddZddZddZddZddZddZd d!Zd"d#Zd$d%ZdEd'd(Z d)d*Z!d+d,Z"d-d.Z#d/d0Z$d1d2Z%d3d4Z&d5d6Z'd7d8Z(d9d:Z)d;d<Z*d=d>Z+d?d@Z,dS)F dispatcherFNwarningc Cs|dkrt|_n||_d|_|r|d|||d|_y||_Wqtk r}z*|j dt t fkrvd|_n | |Wdd}~XYqXnd|_ dS)NrTF)r1_map_fileno setblocking set_socket connectedZ getpeernameaddrr*r+rr del_channelsocket)selfsockr;rrrr__init__s    zdispatcher.__init__cCs|jjd|jjg}|jr.|jr.|dn|jr>|d|jdk ry|d|jWn$tk r|t|jYnXdd |t |fS)N.Z listeningrNz%s:%dz <%s at %#x> ) __class__rrr7rOr6rN TypeErrorreprjoinid)rRstatusrrr__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)rRZfamilytyperSrrr create_sockets   zdispatcher.create_socketcCs||_||_||dS)N)rQfilenorKr^)rRrSr;rrrrM s zdispatcher.set_socketcCsDy*|jtjtj|jtjtjdBWntk r>YnXdS)NrD)rQZ setsockopt SOL_SOCKETZ SO_REUSEADDR getsockoptr*)rRrrrset_reuse_addr%s zdispatcher.set_reuse_addrcCsdS)NTr)rRrrrr46szdispatcher.readablecCsdS)NTr)rRrrrr59szdispatcher.writablecCs(d|_tjdkr|dkrd}|j|S)NTnt)r7rnamerQlisten)rRZnumrrrrh@szdispatcher.listencCs||_|j|S)N)rOrQbind)rRrOrrrriFszdispatcher.bindcCspd|_d|_|j|}|tttfks8|tkrBtj dkrB||_ dS|dt fkr^||_ | nt |t|dS)NFTrer)rN connectingrQZ connect_exrrrrrrgrOr handle_connect_eventr*r)rRZaddressrrrrconnectJs   zdispatcher.connectc Csny|j\}}WnNtk r&dStk r`}z|jdtttfkrNdSWdd}~XYn X||fSdS)Nr)rQacceptrXr*r+rr r )rRZconnrOwhyrrrrmXszdispatcher.acceptc Csfy|j|}|Stk r`}z2|jdtkr4dS|jdtkrN|dSWdd}~XYnXdS)Nr)rQsendr*r+rr,r))rRdataresultrnrrrrofs zdispatcher.sendc Cshy$|j|}|s|dS|SWn>tk rb}z |jdtkrP|dSWdd}~XYnXdS)Nr)rQrecvr)r*r+r,)rR buffer_sizerprnrrrrsss zdispatcher.recvc Csnd|_d|_d|_||jdk rjy|jWn6tk rh}z|jdtt fkrXWdd}~XYnXdS)NFr) rNr7rjrPrQcloser*r+rr )rRrnrrrrus zdispatcher.closecCstjdt|dS)Nzlog: %s )sysstderrr"str)rRmessagerrrlogszdispatcher.loginfocCs||jkrtd||fdS)Nz%s: %s)ignore_log_typesprint)rRryr_rrrlog_infos zdispatcher.log_infocCs:|jr|n&|js.|jr$||n|dS)N)r7 handle_acceptrNrjrk handle_read)rRrrrrs  zdispatcher.handle_read_eventcCs@|jtjtj}|dkr(t|t||d|_d|_dS)NrTF) rQrcrbSO_ERRORr*rhandle_connectrNrj)rRrrrrrks zdispatcher.handle_connect_eventcCs*|jr dS|js|jr||dS)N)r7rNrjrk handle_write)rRrrrr!s zdispatcher.handle_write_eventcCs0|jtjtj}|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))rRZniltvtbinfoZ self_reprrrrrs zdispatcher.handle_errorcCs|dddS)Nz!unhandled incoming priority eventrI)r~)rRrrrrszdispatcher.handle_exptcCs|dddS)Nzunhandled read eventrI)r~)rRrrrrszdispatcher.handle_readcCs|dddS)Nzunhandled write eventrI)r~)rRrrrrszdispatcher.handle_writecCs|dddS)Nzunhandled connect eventrI)r~)rRrrrrszdispatcher.handle_connectcCs|}|dk r|j|dS)N)rmhandle_accepted)rRZpairrrrrszdispatcher.handle_acceptcCs||dddS)Nzunhandled accepted eventrI)rur~)rRrSrOrrrrszdispatcher.handle_acceptedcCs|dd|dS)Nzunhandled close eventrI)r~ru)rRrrrr)s zdispatcher.handle_close)NN)N)N)N)r{)-rrrdebugrNr7rjclosingrO frozensetr|rTr]__str__r^rPrQZAF_INETZ SOCK_STREAMr`rMrdr4r5rhrirlrmrorsrurzr~rrkr!r#rrrrrrrr)rrrrrHsL          rHc@s6eZdZd ddZddZddZdd Zd d ZdS) dispatcher_with_sendNcCst|||d|_dS)Nrr)rHrT out_buffer)rRrSr;rrrrTszdispatcher_with_send.__init__cCs.d}t||jdd}|j|d|_dS)Nri)rHror)rRZnum_sentrrr initiate_sendsz"dispatcher_with_send.initiate_sendcCs |dS)N)r)rRrrrrsz!dispatcher_with_send.handle_writecCs|j pt|jS)N)rNlenr)rRrrrr5 szdispatcher_with_send.writablecCs0|jr|dt||j||_|dS)Nz sending %s)rr~rYrr)rRrprrrro s zdispatcher_with_send.send)NN)rrrrTrrr5rorrrrrs  rcCst\}}}g}|stdx0|rN||jjj|jjjt|j f|j }q W~|d\}}}d dd|D}|||f|||fS)Nztraceback does not existrVcSsg|] }d|qS)z [%s|%s|%s]r).0xrrr (sz%compact_traceback..) rvexc_infoAssertionErrorr6tb_framef_code co_filenameco_namerx tb_linenotb_nextrZ)rrtbrfileZfunctionliner{rrrrs rc Cs|dkr t}x~t|D]n}y |Wqtk rb}z|jdtkrLn|sRWdd}~XYqtk rvYq|sYqXqW|dS)Nr) r1r2valuesrur*r+r rclear)r;Z ignore_allrrrr close_all+s   rposixc@sNeZdZddZddZddZddZdd d ZeZeZ d d Z ddZ d S) file_wrappercCst||_dS)N)rdupr>)rRr>rrrrTPszfile_wrapper.__init__cCs*|jdkrtjd|t|d|dS)Nrzunclosed file %r)source)r>warningswarnResourceWarningru)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|sdStddS)Nrz-Only asyncore specific behaviour implemented.)rQrbrNotImplementedError)rRlevelZoptnamebuflenrrrrc_s   zfile_wrapper.getsockoptcCs(|jdkrdS|j}d|_t|dS)Nrr)r>rru)rRr>rrrrujs  zfile_wrapper.closecCs|jS)N)r>)rRrrrraqszfile_wrapper.fileno)N) rrrrTrrsrorcr r"rurarrrrrKs rc@seZdZdddZddZdS)file_dispatcherNcCsPt|d|d|_y |}Wntk r4YnX||t|ddS)NTF)rHrTrNraAttributeErrorset_filer set_blocking)rRr>r;rrrrTvs  zfile_dispatcher.__init__cCs"t||_|j|_|dS)N)rrQrarKr^)rRr>rrrrs  zfile_dispatcher.set_file)N)rrrrTrrrrrrts r)r0N)r0N)rCFNN)NF)-r%rQrvr8rrerrnorrrrrrrr r r r r rrr,r1rr ExceptionrKeyboardInterrupt SystemExitrr r"r$r/r?rBZpoll3rGrHrrrrgrrrrrr1s@<    '  ,  )