- ;csdkZdkZdkZ2deifdYZdfdYZdfdYZdkZhZdZ )dZ dS( Ns async_chatcs2dZ48dZ9dZ;edZAdZEdZMdZdZdZ dZ d Z d Z d Z d Zd ZdZdZRS(sThis is an abstract class. You must derive from this class, and add the two methods collect_incoming_data() and found_terminator()icsD;<d|_=d|_>t|_?tii||dS(Ns( sselfs ac_in_buffers ac_out_buffersfifos producer_fifosasyncores dispatchers__init__sconn(sselfsconn((sO/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/asynchat.tweaked.pys__init__;s  csABC||_dS(sRSet the input delimiter. Can be a fixed string of any length, an integer, or NoneN(stermsselfs terminator(sselfsterm((sO/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/asynchat.tweaked.pysset_terminatorAscsEF|iSdS(N(sselfs terminator(sself((sO/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/asynchat.tweaked.pysget_terminatorEscsMOyP|i|i}Wn/Qtij o}R|iSdSnXU|i||_\x\|io]t |i}^|i }_|t jo#a|i|ibd|_nct|tdjoe|}f|}g||jo6h|i|iid|_j|i ||_ nDl|i|i| m|i||_nd|_ o|inxt |}yti|i|}z|djo?||i|i| }|i|||_|int|i|}|oH||jo0|i|i| |i| |_nPn |i|id|_qjWdS(Nsii(sselfsrecvsac_in_buffer_sizesdatassocketserrorswhys handle_errors ac_in_bufferslenslbsget_terminators terminatorsNonescollect_incoming_datastypesnsfound_terminatorsterminator_lensstringsfindsindexsfind_prefix_at_end(sselfsindexslbsdatasnsterminator_lens terminatorswhy((sO/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/asynchat.tweaked.pys handle_readMsL         cs|idS(N(sselfs initiate_send(sself((sO/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/asynchat.tweaked.pys handle_writescs|idS(N(sselfsclose(sself((sO/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/asynchat.tweaked.pys handle_closescs-|iit||idS(N(sselfs producer_fifospushssimple_producersdatas initiate_send(sselfsdata((sO/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/asynchat.tweaked.pyspushscs'|ii||idS(N(sselfs producer_fifospushsproducers initiate_send(sselfsproducer((sO/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/asynchat.tweaked.pyspush_with_producerscs#t|i|ijSdS(s4predicate for inclusion in the readable for select()N(slensselfs ac_in_buffersac_in_buffer_size(sself((sO/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/asynchat.tweaked.pysreadablescs5t|ipt|ip|i SdS(s4predicate for inclusion in the writable for select()N(slensselfs ac_out_buffers producer_fifos connected(sself((sO/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/asynchat.tweaked.pyswritablescs|iitdS(sAautomatically close this channel once the outgoing queue is emptyN(sselfs producer_fifospushsNone(sself((sO/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/asynchat.tweaked.pysclose_when_donescs0td}xdo t|io|ii}|tjo:|i o!|ii |i ndSnEt||jo.|ii |i||_dSn|i }|o|i||_dSn|ii ndSqWdS(Nsi( stypes _string_typeslensselfs producer_fifosfirstspsNones ac_out_bufferspopsclosesmoresdata(sselfspsdatas _string_type((sO/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/asynchat.tweaked.pys refill_buffers(     cs|i}t|i|jo|in|io|iowy>|i|i| }|o|i||_nWn/t i j o}|i dSnXndS(N( sselfsac_out_buffer_sizesobsslens ac_out_buffers refill_buffers connectedssendsnum_sentssocketserrorswhys handle_error(sselfsnum_sentswhysobs((sO/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/asynchat.tweaked.pys initiate_sends   csGd|_d|_x"|io|iiq!WdS(Ns(sselfs ac_in_buffers ac_out_buffers producer_fifospop(sself((sO/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/asynchat.tweaked.pysdiscard_bufferss    (s__doc__sac_in_buffer_sizesac_out_buffer_sizesNones__init__sset_terminatorsget_terminators handle_reads handle_writes handle_closespushspush_with_producersreadableswritablesclose_when_dones refill_buffers initiate_sendsdiscard_buffers(((sO/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/asynchat.tweaked.pys async_chat2s"      A         ssimple_producercs ddZdZRS(Nics||_||_dS(N(sdatasselfs buffer_size(sselfsdatas buffer_size((sO/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/asynchat.tweaked.pys__init__s csvt|i|ijo4|i|i }|i|i|_|Sn |i}d|_|SdS(Ns(slensselfsdatas buffer_sizesresult(sselfsresult((sO/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/asynchat.tweaked.pysmores   (s__init__smore(((sO/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/asynchat.tweaked.pyssimple_producerssfifocsDedZdZdZdZdZRS(Ncs.| og|_n ||_dS(N(slistsself(sselfslist((sO/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/asynchat.tweaked.pys__init__s cst|iSdS(N(slensselfslist(sself((sO/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/asynchat.tweaked.pys__len__scs|idSdS(Ni(sselfslist(sself((sO/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/asynchat.tweaked.pysfirstscs|ii|dS(N(sselfslistsappendsdata(sselfsdata((sO/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/asynchat.tweaked.pyspushscsO|io.|id}|id=d|fSndtfSdS(Nii(sselfslistsresultsNone(sselfsresult((sO/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/asynchat.tweaked.pyspops   (sNones__init__s__len__sfirstspushspop(((sO/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/asynchat.tweaked.pysfifos    csti|o t|Sn"|d}#x<tdt|D#]"}$d||d |f}qKW%ti|d}&|t|ft|<'|t|fSdS(Niis %c\(%s\)?s$( s prefix_cacheshas_keysneedlesregsrangeslensisregexscompile(sneedlesisreg((sO/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/asynchat.tweaked.pys prefix_regexs   css)*t|\}}+t|},|i|td||}-|djo.||Sn0dSdS(Ni( s prefix_regexsneedlesregslengthslenshaystackslhssearchsmaxsresult(shaystacksneedleslengthsregslhsresult((sO/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/asynchat.tweaked.pysfind_prefix_at_end)s "( ssocketsasyncoresstrings dispatchers async_chatssimple_producersfifosregexs prefix_caches prefix_regexsfind_prefix_at_end( sregexsasyncoressockets prefix_regexsstringsfind_prefix_at_ends prefix_cachessimple_producersfifos async_chat((sO/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/asynchat.tweaked.pys?s  /