o ?Og-@s\ ddlZddlmZddlmZededdGdddejZGd d d Zd d Z dS) N)deque)warnzlThe asynchat module is deprecated and will be removed in Python 3.12. The recommended replacement is asyncio) stacklevelc@seZdZ dZdZdZdZd'ddZddZd d Z d d Z d dZ ddZ ddZ ddZddZddZddZddZddZdd Zd!d"Zd#d$Zd%d&ZdS)( async_chatirzlatin-1NcCs(d|_g|_t|_tj|||dSN) ac_in_bufferincomingr producer_fifoasyncore dispatcher__init__)selfZsockmapr//opt/alt/python310/lib64/python3.10/asynchat.pyrKszasync_chat.__init__cCtdNzmust be implemented in subclassNotImplementedErrorrdatarrrcollect_incoming_dataYz async_chat.collect_incoming_datacCs|j|dSN)r appendrrrr_collect_incoming_data\sz!async_chat._collect_incoming_datacCsd|j}|jdd=|Sr)joinr )rdrrr _get_data_s  zasync_chat._get_datacCrrrrrrrfound_terminatordrzasync_chat.found_terminatorcCsD t|tr|jrt||j}n t|tr|dkrtd||_dS)Nrz-the number of received bytes must be positive) isinstancestr use_encodingbytesencodingint ValueError terminator)rZtermrrrset_terminatorgs  zasync_chat.set_terminatorcCs|jSr)r*r!rrrget_terminatorrszasync_chat.get_terminatorcCsz||j}WntyYdSty|YdSwt|tr.|jr.tt|j }|j ||_ |j rt |j }| }|sL| |j d|_ nt|tr|}||krg| |j d|_ |j||_np| |j d||j |d|_ d|_|nVt |}|j |}|dkr|dkr| |j d||j ||d|_ |n+t|j |}|r||kr| |j d| |j | d|_ dS| |j d|_ |j s7dSdS)Nrr)Zrecvac_in_buffer_sizeBlockingIOErrorOSError handle_errorr#r$r%r&r'r lenr,rr(r*r"findfind_prefix_at_end)rrZlbr*nZterminator_lenindexrrr handle_readzsV             zasync_chat.handle_readcC |dSr) initiate_sendr!rrr handle_write zasync_chat.handle_writecCr8r)closer!rrr handle_closer;zasync_chat.handle_closecCsxt|tttfstdt||j}t||kr0tdt||D]}|j ||||q n|j || dS)Nz#data argument must be byte-ish (%r)r) r#r& bytearray memoryview TypeErrortypeac_out_buffer_sizer2ranger rr9)rrZsabsirrrpushs   zasync_chat.pushcCs|j||dSr)r rr9)rZproducerrrrpush_with_producers  zasync_chat.push_with_producercCs dSNrr!rrrreadableszasync_chat.readablecCs |jp|j Sr)r connectedr!rrrwritableszasync_chat.writablecCs |jddSr)r rr!rrrclose_when_doneszasync_chat.close_when_donecCs|jr|jr|jd}|s|jd=|dur|dS|j}z|d|}Wnty@|}|r:|j|n|jd=Yqwt|trO|j rOt ||j }z| |}Wnt yd|YdSw|r|t|kss|t|kr~||d|jd<dS|jd=dSdSdS)Nr)r rJr=rBr@more appendleftr#r$r%r&r'sendr0r1r2)rfirstZobsrZnum_sentrrrr9s@     zasync_chat.initiate_sendcCs d|_|jdd=|jdSr)r r r clearr!rrrdiscard_bufferss zasync_chat.discard_buffers)NN)__name__ __module__ __qualname__r.rBr%r'rrrr r"r+r,r7r:r=rErFrIrKrLr9rRrrrrr<s.  H  (rc@seZdZdddZddZdS)simple_producercCs||_||_dSr)r buffer_size)rrrXrrrrs zsimple_producer.__init__cCsFt|j|jkr|jd|j}|j|jd|_|S|j}d|_|Sr)r2rrX)rresultrrrrMszsimple_producer.moreN)rW)rSrTrUrrMrrrrrVs  rVcCsDt|d}|r ||d|s |d8}|r ||d|r|SrG)r2endswith)ZhaystackZneedlelrrrr47s r4) r collectionsrwarningsrDeprecationWarningr rrVr4rrrrs  \