grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026U iÛf@,ã@s@ddlZddlmZGdd„dejƒZGdd„dƒZdd„ZdS) éN)Údequec@s¦eZdZdZdZdZdZd'dd„Zdd„Zd d „Z d d „Z d d„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„ZdS)(Ú async_chatirzlatin-1NcCs(d|_g|_tƒ|_tj |||¡dS©Nó)Ú ac_in_bufferÚincomingrÚ producer_fifoÚasyncoreÚ dispatcherÚ__init__)ÚselfZsockÚmap©rú-/opt/alt/python38/lib64/python3.8/asynchat.pyr Cszasync_chat.__init__cCs tdƒ‚dS©Nzmust be implemented in subclass©ÚNotImplementedError©r ÚdatarrrÚcollect_incoming_dataQsz async_chat.collect_incoming_datacCs|j |¡dS©N)rÚappendrrrrÚ_collect_incoming_dataTsz!async_chat._collect_incoming_datacCsd |j¡}|jdd…=|Sr)Újoinr)r ÚdrrrÚ _get_dataWs  zasync_chat._get_datacCs tdƒ‚dSrr©r rrrÚfound_terminator\szasync_chat.found_terminatorcCsBt|tƒr|jrt||jƒ}nt|tƒr8|dkr8tdƒ‚||_dS)Nrz-the number of received bytes must be positive)Ú isinstanceÚstrÚ use_encodingÚbytesÚencodingÚintÚ ValueErrorÚ terminator)r ZtermrrrÚset_terminator_s zasync_chat.set_terminatorcCs|jSr)r%rrrrÚget_terminatorjszasync_chat.get_terminatorc CsØz| |j¡}WnDtk r&YdStk rT}z| ¡WY¢dSd}~XYnXt|tƒrr|jrrtt|j ƒ}|j ||_ |j �rÔt |j ƒ}|  ¡}|s°|  |j ¡d|_ q~t|tƒ�r|}||krè|  |j ¡d|_ |j||_n2|  |j d|…¡|j |d…|_ d|_| ¡q~t |ƒ}|j  |¡}|dk�rv|dk�rX|  |j d|…¡|j ||d…|_ | ¡q~t|j |ƒ}|�rÀ||k�rÔ|  |j d| …¡|j | d…|_ �qÔq~|  |j ¡d|_ q~dS)Nrréÿÿÿÿ)ZrecvÚac_in_buffer_sizeÚBlockingIOErrorÚOSErrorÚ handle_errorrrr r!r"rÚlenr'rr#r%rÚfindÚfind_prefix_at_end)r rZwhyZlbr%ÚnZterminator_lenÚindexrrrÚ handle_readrsR              zasync_chat.handle_readcCs | ¡dSr)Ú initiate_sendrrrrÚ handle_writeºszasync_chat.handle_writecCs | ¡dSr)ÚcloserrrrÚ handle_close½szasync_chat.handle_closecCsxt|tttfƒstdt|ƒƒ‚|j}t|ƒ|kr`tdt|ƒ|ƒD]}|j   ||||…¡q@n |j   |¡|  ¡dS)Nz#data argument must be byte-ish (%r)r) rr!Ú bytearrayÚ memoryviewÚ TypeErrorÚtypeÚac_out_buffer_sizer-Úrangerrr3)r rZsabsÚirrrÚpushÀsÿ  zasync_chat.pushcCs|j |¡| ¡dSr)rrr3)r ZproducerrrrÚpush_with_producerÌs zasync_chat.push_with_producercCsdS©NérrrrrÚreadableÐszasync_chat.readablecCs|jp |j Sr)rÚ connectedrrrrÚwritableØszasync_chat.writablecCs|j d¡dSr)rrrrrrÚclose_when_doneÜszasync_chat.close_when_donecCs|j�r|j�r|jd}|s:|jd=|dkr:| ¡dS|j}z|d|…}Wn:tk rŠ| ¡}|rz|j |¡n|jd=YqYnXt|tƒr¨|j r¨t ||j ƒ}z|  |¡}Wnt k rÔ| ¡YdSX|�r|t|ƒksö|t|ƒk�r ||d…|jd<n|jd=dSdS)Nr)rrCr6r;r9ÚmoreÚ appendleftrrr r!r"Úsendr+r,r-)r ÚfirstZobsrZnum_sentrrrr3às8   zasync_chat.initiate_sendcCs d|_|jdd…=|j ¡dSr)rrrÚclearrrrrÚdiscard_bufferss zasync_chat.discard_buffers)NN)Ú__name__Ú __module__Ú __qualname__r)r;r r"r rrrrr&r'r2r4r6r>r?rBrDrEr3rKrrrrr4s*  H (rc@seZdZddd„Zdd„ZdS)Úsimple_producerécCs||_||_dSr)rÚ buffer_size)r rrQrrrr szsimple_producer.__init__cCsJt|jƒ|jkr6|jd|j…}|j|jd…|_|S|j}d|_|SdSr)r-rrQ)r ÚresultrrrrFszsimple_producer.moreN)rP)rLrMrNr rFrrrrrOs rOcCs0t|ƒd}|r,| |d|…¡s,|d8}q |Sr@)r-Úendswith)ZhaystackZneedleÚlrrrr//s  r/)r Ú collectionsrr rrOr/rrrrÚ0s  \