Ϫf dZddlmZddlmZeej ej GddZGddeZy) z Producer-Consumer Proxy. ) implementer) interfacescheZdZdZdZdZdZdZdZdZ dZ dZ dZ dZ dZd Zd Zd Zd Zd efdZy)BasicProducerConsumerProxyaa I can act as a man in the middle between any Producer and Consumer. @ivar producer: the Producer I subscribe to. @type producer: L{IProducer} @ivar consumer: the Consumer I publish to. @type consumer: L{IConsumer} @ivar paused: As a Producer, am I paused? @type paused: bool NTFc^g|_|$||_|j||jyyN)_bufferconsumerregisterProducer iAmStreaming)selfr s 7/usr/lib/python3/dist-packages/twisted/protocols/pcp.py__init__z#BasicProducerConsumerProxy.__init__#s1  $DM  % %dD,=,= > c`d|_|jr|jjyyNT)pausedproducerpauseProducingr s rrz)BasicProducerConsumerProxy.pauseProducing+s% == MM ( ( * rc&d|_|jrD|jjdj |jg|jddn|j sd|_|j|jjyy)NFT) rr r writejoinr outstandingPullrresumeProducingrs rrz*BasicProducerConsumerProxy.resumeProducing0sl << MM   5 6 DLLO$$'+$ == $ MM ) ) + %rcn|j|jj|j|`yyr)r stopProducingr rs rrz(BasicProducerConsumerProxy.stopProducing=s0 == $ MM ' ' ) == $  %rc|js|js(|js|jj |y|j #|j j |d|_yyNF)rr rr appendr rr datas rrz BasicProducerConsumerProxy.writeEsT ;;t009M9M LL   % ]] & MM   %#(D 'rcp|j|jj|jyr)r finishunregisterProducerrs rr%z!BasicProducerConsumerProxy.finishNs( == $ MM " !rc ||_||_yr)rproducerIsStreamingr r streamings rr z+BasicProducerConsumerProxy.registerProducerSs  #, rcr|j|`|`|jr|jjyyr)rr(r r&rs rr&z-BasicProducerConsumerProxy.unregisterProducerWs3 == $ ( == MM , , . rreturncVd|jdt|dd|jdS)N<@xz around >) __class__idr rs r__repr__z#BasicProducerConsumerProxy.__repr__^s,4>>"!BtHQz8ProducerConsumerProxy.resumeProducing..=1A=)rr r_writeSomeDatarCr unregisteredr r&rrsumproducerPaused bufferSizer)r r# bytesSentunsent bytesBuffereds rrz%ProducerConsumerProxy.resumeProducingts9 <<774<<(D++D1I3t9$ij)))DCD)#)( Q"$ QI   LL ) MM , , .  '0=D == $= ==M"" (G&+# --/%% --/& %rc>|js|js(|js|jj |nv|j j|jrJd|j |}d|_|t|k(s1|jrJd|jj ||d|j[|jrNtd|jD}||jk\r"|jjd|_ yyyy)Nz9Writing fresh data to consumer before my buffer is empty!Fr@c32K|]}t|ywrrBrDs rrGz.ProducerConsumerProxy.write..rHrIT)rr rr r!r rJrCrr(rLrNrrM)r r#rOrQs rrzProducerConsumerProxy.writes ;;t009M9M LL   % ]] &LL KJ K ++D1I#(D D )))DCD) ##D$45 MM %4+C+C= ==M/ ,,.&*#0,D %rcfd|_tj||||s|jyyr )rKrr rr)s rr z&ProducerConsumerProxy.registerProducers0!"33D(IN  $ $ &rc|j|`|`d|_|jr(|js|jj yyyr)rr(rKr r r&rs rr&z(ProducerConsumerProxy.unregisterProducersC == $ (  == MM , , .".=rch|jy|jj|t|S)z`Write as much of this data as possible. @returns: The number of bytes written. r)r rrCr"s rrJz$ProducerConsumerProxy._writeSomeDatas- ==  D!4yrN) r5r6r7r8rNrMrKrrrr r&rJr;rrr=r=bs7JNL +0Z+8' /rr=N) r8zope.interfacertwisted.internetr IProducer IConsumerrr=r;rrr[sT '' Z ! !:#7#78PIPI9PIfq6qr