Go to the latest version of this document.

# ``twisted`.`protocols`.`pcp`.`ProducerConsumerProxy``

class documentation

`class ProducerConsumerProxy(BasicProducerConsumerProxy): (source)`

Known subclasses: `twisted.protocols.htb.ShapedConsumer`

Constructor: `ProducerConsumerProxy(consumer)`

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 | `pauseProducing` | Undocumented
Method | `registerProducer` | Register to receive data from a producer.
Method | `resumeProducing` | Undocumented
Method | `unregisterProducer` | Stop consuming data from a producer, without disconnecting.
Method | `write` | The producer will write data by calling this method.
Class Variable | `bufferSize` | Undocumented
Instance Variable | `outstandingPull` | Undocumented
Instance Variable | `paused` | Undocumented
Instance Variable | `producerPaused` | Undocumented
Instance Variable | `unregistered` | Undocumented
Method | `_writeSomeData` | Write as much of this data as possible.

Inherited from `BasicProducerConsumerProxy`:

Method | `__init__` | Undocumented
Method | `__repr__` | Undocumented
Method | `finish` | Undocumented
Method | `stopProducing` | Stop producing data.
Class Variable | `iAmStreaming` | Undocumented
Class Variable | `stopped` | Undocumented
Instance Variable | `consumer` | the Consumer I publish to.
Instance Variable | `producer` | the Producer I subscribe to.
Instance Variable | `producerIsStreaming` | Undocumented
Instance Variable | `_buffer` | Undocumented

def pauseProducing(self): (source)
overrides `twisted.protocols.pcp.BasicProducerConsumerProxy.pauseProducing`

Undocumented

def registerProducer(self, producer, streaming): (source)
from `twisted.internet.interfaces.IConsumer`
overrides `twisted.protocols.pcp.BasicProducerConsumerProxy.registerProducer`

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
producer | Undocumented
streaming | `True` if `producer` provides `IPushProducer`, `False` if `producer` provides `IPullProducer`.

Raises
`RuntimeError` | If a producer is already registered.

def resumeProducing(self): (source)
overrides `twisted.protocols.pcp.BasicProducerConsumerProxy.resumeProducing`

Undocumented

def unregisterProducer(self): (source)
from `twisted.internet.interfaces.IConsumer`
overrides `twisted.protocols.pcp.BasicProducerConsumerProxy.unregisterProducer`

Stop consuming data from a producer, without disconnecting.

def write(self, data): (source)
from `twisted.internet.interfaces.IConsumer`
overrides `twisted.protocols.pcp.BasicProducerConsumerProxy.write`

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

outstandingPull = (source)
overrides `twisted.protocols.pcp.BasicProducerConsumerProxy.outstandingPull`

Undocumented

paused: `bool` = (source)
overrides `twisted.protocols.pcp.BasicProducerConsumerProxy.paused`

Undocumented

producerPaused: `bool` = (source)

Undocumented

unregistered: `bool` = (source)

Undocumented

def _writeSomeData(self, data): (source)
overridden in `twisted.protocols.htb.ShapedConsumer`

Write as much of this data as possible.

Returns
The number of bytes written.