class documentation

class ProducerConsumerProxy(BasicProducerConsumerProxy): (source)

Known subclasses: twisted.protocols.htb.ShapedConsumer

View In Hierarchy

ProducerConsumerProxy with a finite buffer.

When my buffer fills up, I have my parent Producer pause until my buffer has room in it again.

Method pause​Producing Undocumented
Method register​Producer Register to receive data from a producer.
Method resume​Producing Undocumented
Method unregister​Producer Stop consuming data from a producer, without disconnecting.
Method write The producer will write data by calling this method.
Class Variable buffer​Size Undocumented
Instance Variable outstanding​Pull Undocumented
Instance Variable paused Undocumented
Instance Variable producer​Paused Undocumented
Instance Variable unregistered Undocumented
Method _write​Some​Data Write as much of this data as possible.

Inherited from BasicProducerConsumerProxy:

Method __init__ Undocumented
Method __repr__ Undocumented
Method finish Undocumented
Method stop​Producing Stop producing data.
Class Variable i​Am​Streaming Undocumented
Class Variable stopped Undocumented
Instance Variable consumer the Consumer I publish to.
Instance Variable producer the Producer I subscribe to.
Instance Variable producer​Is​Streaming Undocumented
Instance Variable _buffer Undocumented
def registerProducer(self, producer, streaming): (source)

Register to receive data from a producer.

This sets self to be a consumer for a producer. When this object runs out of data (as when a send(2) call on a socket succeeds in moving the last data from a userspace buffer into a kernelspace buffer), it will ask the producer to resumeProducing().

For IPullProducer providers, resumeProducing will be called once each time data is required.

For IPushProducer providers, pauseProducing will be called whenever the write buffer fills up and resumeProducing will only be called when it empties. The consumer will only call resumeProducing to balance a previous pauseProducing call; the producer is assumed to start in an un-paused state.

Parameters
producerUndocumented
streamingTrue if producer provides IPushProducer, False if producer provides IPullProducer.
Raises
RuntimeErrorIf a producer is already registered.
def unregisterProducer(self): (source)
Stop consuming data from a producer, without disconnecting.
def write(self, data): (source)

The producer will write data by calling this method.

The implementation must be non-blocking and perform whatever buffering is necessary. If the producer has provided enough data for now and it is a IPushProducer, the consumer may call its pauseProducing method.

bufferSize = (source)

Undocumented

producerPaused: bool = (source)

Undocumented

unregistered: bool = (source)

Undocumented

def _writeSomeData(self, data): (source)
Write as much of this data as possible.
Returns
The number of bytes written.