Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325
3 \¿Nã @shdZddlZddlZddlZddlZddlZddlZddlmZm Z m Z m Z m Z m Z mZmZmZmZmZmZmZee e eeeehƒZyeWnek r¤iZYnXdd„ZGdd„deƒZeeefZdd „Zd d „Z d d „Z!dd„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!k�rdGd"d#„d#ƒZ,Gd$d%„d%e'ƒZ-dS)*a Basic infrastructure for asynchronous socket service clients and servers. There are only two ways to have a program on a single processor do "more than one thing at a time". Multi-threaded programming is the simplest and most popular way to do it, but there is another very different technique, that lets you have nearly all the advantages of multi-threading, without actually using multiple threads. it's really only practical if your program is largely I/O bound. If your program is CPU bound, then pre-emptive scheduled threads are probably what you really need. Network servers are rarely CPU-bound, however. If your operating system supports the select() system call in its I/O library (and nearly all do), then you can use it to juggle multiple communication channels at once; doing other work while your I/O is taking place in the "background." Although this strategy can seem strange and complex, especially at first, it is in many ways easier to understand and control than multi-threaded programming. The module documented here solves many of the difficult problems for you, making the task of building sophisticated high-performance network servers and clients a snap. éN) ÚEALREADYÚ EINPROGRESSÚ EWOULDBLOCKÚ ECONNRESETÚEINVALÚENOTCONNÚ ESHUTDOWNÚEISCONNÚEBADFÚ ECONNABORTEDÚEPIPEÚEAGAINÚ errorcodec Cs>y tj|ƒStttfk r8|tkr0t|Sd|SXdS)NzUnknown error %s)ÚosÚstrerrorÚ ValueErrorÚ OverflowErrorÚ NameErrorr)Úerr©rú /usr/lib64/python3.6/asyncore.pyÚ _strerrorDs  rc@s eZdZdS)ÚExitNowN)Ú__name__Ú __module__Ú __qualname__rrrrrLsrc Cs:y |jƒWn(tk r"‚Yn|jƒYnXdS)N)Úhandle_read_eventÚ_reraised_exceptionsÚ handle_error)ÚobjrrrÚreadQs  r c Cs:y |jƒWn(tk r"‚Yn|jƒYnXdS)N)Úhandle_write_eventrr)rrrrÚwriteYs  r"c Cs:y |jƒWn(tk r"‚Yn|jƒYnXdS)N)Úhandle_expt_eventrr)rrrrÚ _exceptionas  r$cCsÆyX|tj@r|jƒ|tj@r&|jƒ|tj@r8|jƒ|tjtjBtj B@rV|j ƒWnht k rš}z&|j dt kr‚|jƒn|j ƒWYdd}~Xn(tk r®‚Yn|jƒYnXdS)Nr)ÚselectÚPOLLINrÚPOLLOUTr!ÚPOLLPRIr#ZPOLLHUPZPOLLERRZPOLLNVALÚ handle_closeÚOSErrorÚargsÚ _DISCONNECTEDrr)rÚflagsÚerrrÚ readwriteis"     r/çc CsN|dkr t}|�rJg}g}g}x^t|jƒƒD]N\}}|jƒ}|jƒ}|rR|j|ƒ|rh|j rh|j|ƒ|sp|r,|j|ƒq,Wg|koš|koš|knr®tj|ƒdSt j ||||ƒ\}}}x(|D] }|j |ƒ}|dkrâqÊt |ƒqÊWx*|D]"}|j |ƒ}|dk�rqôt |ƒqôWx.|D]&}|j |ƒ}|dk�r<�q t |ƒ�q WdS)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ƒ}tjƒ}|rÆx^t|jƒƒD]N\}}d}|jƒr^|tjtjBO}|j ƒrx|j rx|tj O}|r:|j ||ƒq:W|j|ƒ}x.|D]&\}}|j |ƒ}|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ÚwarningcCs |dkrt|_n||_d|_|r–|jdƒ|j||ƒd|_y|jƒ|_Wqœtk r’}z,|j dt t fkrvd|_n |j |ƒ‚WYdd}~XqœXnd|_ dS)NrTF)r1Ú_mapÚ_filenoÚ setblockingÚ set_socketÚ connectedZ getpeernameÚaddrr*r+rrÚ del_channelÚsocket)ÚselfÚsockr;rrrrÚ__init__Üs    zdispatcher.__init__c Cs˜|jjd|jjg}|jr.|jr.|jdƒn|jr>|jdƒ|jdk r‚y|jd|jƒWn$tk r€|jt|jƒƒYnXddj |ƒt |ƒfS)NÚ.Z listeningrNz%s:%dz <%s at %#x>ú ) Ú __class__rrr7rOr6rNÚ TypeErrorÚreprÚjoinÚid)rRZstatusrrrÚ__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|_tj||ƒ}|jdƒ|j|ƒdS)Nr)Zfamily_and_typerQrLrM)rRZfamilyÚtyperSrrrÚ create_sockets   zdispatcher.create_socketcCs||_|jƒ|_|j|ƒdS)N)rQÚfilenorKr])rRrSr;rrrrM s zdispatcher.set_socketc CsDy*|jjtjtj|jjtjtjƒdBƒWntk r>YnXdS)NrD)rQZ setsockoptÚ SOL_SOCKETZ SO_REUSEADDRÚ getsockoptr*)rRrrrÚset_reuse_addr&s zdispatcher.set_reuse_addrcCsdS)NTr)rRrrrr47szdispatcher.readablecCsdS)NTr)rRrrrr5:szdispatcher.writablecCs(d|_tjdkr|dkrd}|jj|ƒS)NTÚnté)r7rÚnamerQÚlisten)rRZnumrrrrgAszdispatcher.listencCs||_|jj|ƒS)N)rOrQÚbind)rRrOrrrrhGszdispatcher.bindcCspd|_d|_|jj|ƒ}|tttfks8|tkrBtj dkrB||_ dS|dt fkr^||_ |j ƒnt |t|ƒ‚dS)NFTrdr)rNÚ connectingrQZ connect_exrrrrrrfrOr Úhandle_connect_eventr*r)rRZaddressrrrrÚconnectKs   zdispatcher.connectcCsny|jjƒ\}}WnNtk r&dStk r`}z |jdtttfkrNdS‚WYdd}~Xn X||fSdS)Nr)rQÚacceptrXr*r+rr r )rRZconnrOÚwhyrrrrlYszdispatcher.acceptcCsfy|jj|ƒ}|Stk r`}z4|jdtkr4dS|jdtkrN|jƒdS‚WYdd}~XnXdS)Nr)rQÚsendr*r+rr,r))rRÚdataÚresultrmrrrrngs zdispatcher.sendcCshy$|jj|ƒ}|s|jƒdS|SWn>tk rb}z"|jdtkrP|jƒdS‚WYdd}~XnXdS)Nór)rQÚrecvr)r*r+r,)rRÚ buffer_sizerormrrrrrts zdispatcher.recvcCsnd|_d|_d|_|jƒ|jdk rjy|jjƒWn6tk rh}z|jdtt fkrX‚WYdd}~XnXdS)NFr) rNr7rirPrQÚcloser*r+rr )rRrmrrrrt†s zdispatcher.closecCstjjdt|ƒƒdS)Nzlog: %s )ÚsysÚstderrr"Ústr)rRÚmessagerrrÚlog–szdispatcher.logÚinfocCs||jkrtd||fƒdS)Nz%s: %s)Úignore_log_typesÚprint)rRrxr^rrrÚlog_info™s zdispatcher.log_infocCs:|jr|jƒn&|js.|jr$|jƒ|jƒn|jƒdS)N)r7Ú handle_acceptrNrirjÚ handle_read)rRrrrr�s  zdispatcher.handle_read_eventcCs@|jjtjtjƒ}|dkr(t|t|ƒƒ‚|jƒd|_d|_dS)NrTF) rQrbraÚSO_ERRORr*rÚhandle_connectrNri)rRrrrrrj©s zdispatcher.handle_connect_eventcCs*|jr dS|js|jr|jƒ|jƒdS)N)r7rNrirjÚ handle_write)rRrrrr!±s zdispatcher.handle_write_eventcCs0|jjtjtjƒ}|dkr$|jƒn|jƒdS)Nr)rQrbrar€r)Ú handle_expt)rRrrrrr#¼s zdispatcher.handle_expt_eventc CsXtƒ\}}}}y t|ƒ}Wndt|ƒ}YnX|jd||||fdƒ|jƒ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|jddƒdS)Nz!unhandled incoming priority eventrI)r})rRrrrrƒßszdispatcher.handle_exptcCs|jddƒdS)Nzunhandled read eventrI)r})rRrrrrâszdispatcher.handle_readcCs|jddƒdS)Nzunhandled write eventrI)r})rRrrrr‚åszdispatcher.handle_writecCs|jddƒdS)Nzunhandled connect eventrI)r})rRrrrr�èszdispatcher.handle_connectcCs|jƒ}|dk r|j|ŽdS)N)rlÚhandle_accepted)rRZpairrrrr~ëszdispatcher.handle_acceptcCs|jƒ|jddƒdS)Nzunhandled accepted eventrI)rtr})rRrSrOrrrr‰ðszdispatcher.handle_acceptedcCs|jddƒ|jƒdS)Nzunhandled close eventrI)r}rt)rRrrrr)ôs zdispatcher.handle_close)NN)N)N)N)rz)-rrrÚdebugrNr7riÚclosingrOÚ frozensetr{rTr\Ú__str__r]rPrQZAF_INETZ SOCK_STREAMr_rMrcr4r5rgrhrkrlrnrrrtryr}rrjr!r#rrƒrr‚r�r~r‰r)rrrrrHÒsL          rHc@s6eZdZd dd„Zdd„Zdd„Zdd „Zd d „ZdS) Údispatcher_with_sendNcCstj|||ƒd|_dS)Nrq)rHrTÚ out_buffer)rRrSr;rrrrTÿszdispatcher_with_send.__init__cCs.d}tj||jdd…ƒ}|j|d…|_dS)Nri)rHrnr�)rRZnum_sentrrrÚ initiate_sendsz"dispatcher_with_send.initiate_sendcCs |jƒdS)N)r�)rRrrrr‚sz!dispatcher_with_send.handle_writecCs|j pt|jƒS)N)rNÚlenr�)rRrrrr5 szdispatcher_with_send.writablecCs0|jr|jdt|ƒƒ|j||_|jƒdS)Nz sending %s)rŠr}rYr�r�)rRrorrrrns zdispatcher_with_send.send)NN)rrrrTr�r‚r5rnrrrrrŽýs  rŽcCs†tjƒ\}}}g}|stdƒ‚x0|rN|j|jjj|jjjt|j ƒfƒ|j }q W~|d\}}}dj dd„|Dƒƒ}|||f|||fS)Nztraceback does not existrDrVcSsg|] }d|‘qS)z [%s|%s|%s]r)Ú.0Úxrrrú )sz%compact_traceback..éÿÿÿÿ) ruÚexc_infoÚAssertionErrorr6Útb_frameÚf_codeÚ co_filenameÚco_namerwÚ tb_linenoÚtb_nextrZ)r†r‡ÚtbrˆÚfileZfunctionÚlinerzrrrr…s r…cCs˜|dkr t}x~t|jƒƒD]n}y |jƒWqtk rb}z|jdtkrLn|sR‚WYdd}~Xqtk rv‚Yq|s‚‚YqXqW|jƒdS)Nr) r1r2Úvaluesrtr*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_wrappercCstj|ƒ|_dS)N)rÚdupr>)rRr>rrrrTQszfile_wrapper.__init__cCs*|jdkrtjd|t|d�|jƒdS)Nrzunclosed file %r)Úsource)r>ÚwarningsÚwarnÚResourceWarningrt)rRrrrÚ__del__Ts  zfile_wrapper.__del__cGstj|jf|žŽS)N)rr r>)rRr+rrrrrZszfile_wrapper.recvcGstj|jf|žŽS)N)rr"r>)rRr+rrrrn]szfile_wrapper.sendNcCs*|tjkr|tjkr| rdStdƒ‚dS)Nrz-Only asyncore specific behaviour implemented.)rQrar€ÚNotImplementedError)rRÚlevelZoptnameZbuflenrrrrb`s   zfile_wrapper.getsockoptcCs(|jdkrdS|j}d|_tj|ƒdS)NrrDr•)r>rrt)rRr>rrrrtks  zfile_wrapper.closecCs|jS)N)r>)rRrrrr`rszfile_wrapper.fileno)N) rrrrTr«rrrnrbr r"rtr`rrrrr¥Ls r¥c@seZdZddd„Zdd„ZdS)Úfile_dispatcherNc CsPtj|d|ƒd|_y |jƒ}Wntk r4YnX|j|ƒtj|dƒdS)NTF)rHrTrNr`ÚAttributeErrorÚset_filerÚ set_blocking)rRr>r;rrrrTws  zfile_dispatcher.__init__cCs"t|ƒ|_|jjƒ|_|jƒdS)N)r¥rQr`rKr])rRr>rrrr°‚s  zfile_dispatcher.set_file)N)rrrrTr°rrrrr®us r®)r0N)r0N)rCFNN)NF).Ú__doc__r%rQrur8r¨rÚerrnorrrrrrrr r r r r rrŒr,r1rrÚ ExceptionrÚKeyboardInterruptÚ SystemExitrr r"r$r/r?rBZpoll3rGrHrŽr…r£rfr¥r®rrrrÚ/sB<    '  -  )