# ``twisted`.`internet`.`process`.`ProcessWriter``

class documentation

`class ProcessWriter(abstract.FileDescriptor): (source)`

View In Hierarchy

(Internal) Helper class to write into a Process's input pipe.

I am a helper which describes a selectable asynchronous writer to a process's input pipe, including stdin.

Method | `__init__` | Initialize, specifying a Process instance to connect to.
Method | `connectionLost` | See abstract.FileDescriptor.connectionLost.
Method | `doRead` | The only way a write pipe can become "readable" is at EOF, because the child has closed it, and we're using a reactor which doesn't distinguish between readable and closed (such as the select reactor).
Method | `fileno` | Return the fileno() of my process's stdin.
Method | `write` | Reliably write some data.
Method | `writeSomeData` | Write some data to the open process.
Class Variable | `connected` | Undocumented
Class Variable | `ic` | Undocumented
Instance Variable | `enableReadHack` | A flag which determines how readability on this write descriptor will be handled. If `True`, then readability may indicate the reader for this write descriptor has been closed (ie, the connection has been lost). If `False`, then readability events are ignored.
Instance Variable | `fd` | Undocumented
Instance Variable | `name` | Undocumented
Instance Variable | `proc` | Undocumented

Inherited from `FileDescriptor`:

Method | `doWrite` | Called when data can be written.
Method | `getHost` | Similar to getPeer, but returns an address describing this side of the connection.
Method | `getPeer` | Get the remote address of this connection.
Method | `loseConnection` | Close the connection at the next available opportunity.
Method | `loseWriteConnection` | Undocumented
Method | `pauseProducing` | Pause producing data.
Method | `readConnectionLost` | Indicates read connection was lost.
Method | `resumeProducing` | Resume producing data.
Method | `startReading` | Start waiting for read availability.
Method | `startWriting` | Start waiting for write availability.
Method | `stopConsuming` | Stop consuming data.
Method | `stopProducing` | Stop producing data.
Method | `stopReading` | Stop waiting for read availability.
Method | `stopWriting` | Stop waiting for write availability.
Method | `writeConnectionLost` | Indicates write connection was lost.
Method | `writeSequence` | Reliably write a sequence of data.
Constant | `SEND_LIMIT` | Undocumented
Class Variable | `bufferSize` | Undocumented
Instance Variable | `dataBuffer` | Undocumented
Instance Variable | `disconnected` | Undocumented
Instance Variable | `disconnecting` | Undocumented
Instance Variable | `offset` | Undocumented
Instance Variable | `producer` | Undocumented
Instance Variable | `producerPaused` | Undocumented
Instance Variable | `reactor` | Undocumented
Method | `_closeWriteConnection` | Undocumented
Method | `_isSendBufferFull` | Determine whether the user-space send buffer for this transport is full or not.
Method | `_maybePauseProducer` | Possibly pause a producer, if there is one and the send buffer is full.
Method | `_postLoseConnection` | Called after a loseConnection(), when all data has been written.
Instance Variable | `_tempDataBuffer` | Undocumented
Instance Variable | `_tempDataLen` | Undocumented
Instance Variable | `_writeDisconnected` | Undocumented
Instance Variable | `_writeDisconnecting` | Undocumented

Inherited from `_ConsumerMixin` (via `FileDescriptor`):

Method | `registerProducer` | Register to receive data from a producer.
Method | `unregisterProducer` | Stop consuming data from a producer, without disconnecting.
Instance Variable | `streamingProducer` | `bool` or `int`

Inherited from `_LogOwner` (via `FileDescriptor`):

Method | `logPrefix` | Override this method to insert custom logging behavior. Its return value will be inserted in front of every line. It may be called more times than the number of output lines.
Method | `_getLogPrefix` | Determine the log prefix to use for messages related to `applicationObject`, which may or may not be an `interfaces.ILoggingContext` provider.

def __init__(self, reactor, proc, name, fileno, forceReadHack=False): (source)
overrides `twisted.internet.abstract.FileDescriptor.__init__`
Initialize, specifying a Process instance to connect to.
def connectionLost(self, reason): (source)
from `twisted.internet.interfaces.IFileDescriptor`
overrides `twisted.internet.abstract.FileDescriptor.connectionLost`
See abstract.FileDescriptor.connectionLost.
def doRead(self): (source)
from `twisted.internet.interfaces.IReadDescriptor`
overrides `twisted.internet.abstract.FileDescriptor.doRead`

The only way a write pipe can become "readable" is at EOF, because the child has closed it, and we're using a reactor which doesn't distinguish between readable and closed (such as the select reactor).

Except that's not true on linux < 2.6.11. It has the following characteristics: write pipe is completely empty => POLLOUT (writable in select), write pipe is not completely empty => POLLIN (readable in select), write pipe's reader closed => POLLIN|POLLERR (readable and writable in select)

That's what this funky code is for. If linux was not broken, this function could be simply "return CONNECTION_LOST".

def fileno(self): (source)
from `twisted.internet.interfaces.IFileDescriptor`
overrides `twisted.internet.abstract.FileDescriptor.fileno`
Return the fileno() of my process's stdin.
def write(self, data): (source)
from `twisted.internet.interfaces.IConsumer`
overrides `twisted.internet.abstract.FileDescriptor.write`

Reliably write some data.

The data is buffered until the underlying file descriptor is ready for writing. If there is more than `self.bufferSize` data in the buffer and this descriptor has a registered streaming producer, its `pauseProducing()` method will be called.

def writeSomeData(self, data): (source)
overrides `twisted.internet.abstract.FileDescriptor.writeSomeData`
Write some data to the open process.
connected: `int` = (source)
overrides `twisted.internet.abstract.FileDescriptor.connected`

Undocumented

ic: `int` = (source)

Undocumented

enableReadHack: `bool` = (source)
A flag which determines how readability on this write descriptor will be handled. If `True`, then readability may indicate the reader for this write descriptor has been closed (ie, the connection has been lost). If `False`, then readability events are ignored.
fd = (source)

Undocumented

name = (source)

Undocumented

proc = (source)

Undocumented