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 connection​Lost See abstract.FileDescriptor.connectionLost.
Method do​Read 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 write​Some​Data Write some data to the open process.
Class Variable connected Undocumented
Class Variable ic Undocumented
Instance Variable enable​Read​Hack 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 do​Write Called when data can be written.
Method get​Host Similar to getPeer, but returns an address describing this side of the connection.
Method get​Peer Get the remote address of this connection.
Method lose​Connection Close the connection at the next available opportunity.
Method lose​Write​Connection Undocumented
Method pause​Producing Pause producing data.
Method read​Connection​Lost Indicates read connection was lost.
Method resume​Producing Resume producing data.
Method start​Reading Start waiting for read availability.
Method start​Writing Start waiting for write availability.
Method stop​Consuming Stop consuming data.
Method stop​Producing Stop producing data.
Method stop​Reading Stop waiting for read availability.
Method stop​Writing Stop waiting for write availability.
Method write​Connection​Lost Indicates write connection was lost.
Method write​Sequence Reliably write a sequence of data.
Constant SEND​_LIMIT Undocumented
Class Variable buffer​Size Undocumented
Class Variable disconnecting Undocumented
Instance Variable data​Buffer Undocumented
Instance Variable disconnected Undocumented
Instance Variable offset Undocumented
Instance Variable producer Undocumented
Instance Variable producer​Paused Undocumented
Instance Variable reactor Undocumented
Method _close​Write​Connection Undocumented
Method _is​Send​Buffer​Full Determine whether the user-space send buffer for this transport is full or not.
Method _maybe​Pause​Producer Possibly pause a producer, if there is one and the send buffer is full.
Method _post​Lose​Connection Called after a loseConnection(), when all data has been written.
Class Variable _write​Disconnected Undocumented
Instance Variable _temp​Data​Buffer Undocumented
Instance Variable _temp​Data​Len Undocumented
Instance Variable _write​Disconnecting Undocumented

Inherited from _ConsumerMixin (via FileDescriptor):

Method register​Producer Register to receive data from a producer.
Method unregister​Producer Stop consuming data from a producer, without disconnecting.
Instance Variable streaming​Producer bool or int

Inherited from _LogOwner (via FileDescriptor):

Method log​Prefix 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 _get​Log​Prefix 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)
Initialize, specifying a Process instance to connect to.
def connectionLost(self, reason): (source)
def doRead(self): (source)

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)
Return the fileno() of my process's stdin.
def write(self, data): (source)

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)
Write some data to the open process.

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.

Undocumented

name = (source)

Undocumented

proc = (source)

Undocumented