# ``twisted`.`protocols`.`basic`.`LineReceiver``

class documentation

`class LineReceiver(protocol.Protocol, _PauseableMixin): (source)`

Known subclasses: `twisted.conch.scripts.cftp.StdioClient`, `twisted.conch.telnet.StatefulTelnetProtocol`, `twisted.internet.testing.LineSendingProtocol`, `twisted.mail.imap4.IMAP4Client`, `twisted.mail.imap4.IMAP4Server`, `twisted.mail.smtp.SMTPClient`, `twisted.positioning.nmea.NMEAProtocol`, `twisted.protocols.dict.DictClient`, `twisted.protocols.finger.Finger`, `twisted.protocols.ftp.FTP`, `twisted.protocols.ftp.FTPClientBasic`, `twisted.protocols.ftp.FTPFileListProtocol`, `twisted.protocols.ftp.FTPOverflowProtocol`, `twisted.protocols.memcache.MemCacheProtocol`, `twisted.protocols.postfix.PostfixTCPMapServer`, `twisted.protocols.sip.MessagesParser`, `twisted.runner.procmon.LineLogger`, `twisted.web._newclient.HTTPParser`, `twisted.web.http.HTTPChannel`, `twisted.web.http.HTTPClient`, `twisted.words.protocols.irc.DccChat`, `twisted.words.protocols.irc.IRCClient`

View In Hierarchy

A protocol that receives lines and/or raw data, depending on mode.

In line mode, each line that's received becomes a callback to `lineReceived`. In raw data mode, each chunk of raw data becomes a callback to `LineReceiver.rawDataReceived`. The `setLineMode` and `setRawMode` methods switch between the two modes.

This is useful for line-oriented protocols such as IRC, HTTP, POP, etc.

Method | `clearLineBuffer` | Clear buffered data.
Method | `dataReceived` | Protocol.dataReceived. Translates bytes into lines, and calls lineReceived (or rawDataReceived, depending on mode.)
Method | `lineLengthExceeded` | Called when the maximum line length has been reached. Override if it needs to be dealt with in some special way.
Method | `lineReceived` | Override this for when each line is received.
Method | `rawDataReceived` | Override this for when raw data is received.
Method | `sendLine` | Sends a line to the other end of the connection.
Method | `setLineMode` | Sets the line-mode of this receiver.
Method | `setRawMode` | Sets the raw mode of this receiver. Further data received will be sent to rawDataReceived rather than lineReceived.
Constant | `MAX_LENGTH` | The maximum length of a line to allow (If a sent line is longer than this, the connection is dropped). Default is 16384.
Class Variable | `delimiter` | The line-ending delimiter to use. By default this is `b'\r\n'`.
Instance Variable | `line_mode` | Undocumented
Instance Variable | `_buffer` | Undocumented
Instance Variable | `_busyReceiving` | Undocumented

Inherited from `Protocol`:

Method | `connectionLost` | Called when the connection is shut down.
Method | `logPrefix` | Return a prefix matching the class name, to identify log messages related to this protocol instance.
Class Variable | `factory` | Undocumented

Inherited from `BaseProtocol` (via `Protocol`):

Method | `connectionMade` | Called when a connection is made.
Method | `makeConnection` | Make a connection to a transport and a server.
Instance Variable | `connected` | Undocumented
Instance Variable | `transport` | Undocumented

Inherited from `_PauseableMixin`:

Method | `pauseProducing` | Undocumented
Method | `resumeProducing` | Undocumented
Method | `stopProducing` | Undocumented
Instance Variable | `paused` | Undocumented

def clearLineBuffer(self): (source)
Clear buffered data.

Returns
`bytes` | All of the cleared buffered data.

def dataReceived(self, data): (source)
from `twisted.internet.interfaces.IProtocol`
overrides `twisted.internet.protocol.Protocol.dataReceived`
overridden in `twisted.protocols.sip.MessagesParser`, `twisted.web._newclient.HTTPClientParser`, `twisted.words.protocols.irc.DccChat`, `twisted.words.protocols.irc.IRCClient`
Protocol.dataReceived. Translates bytes into lines, and calls lineReceived (or rawDataReceived, depending on mode.)
def lineLengthExceeded(self, line): (source)
overridden in `twisted.protocols.sip.MessagesParser`

Called when the maximum line length has been reached. Override if it needs to be dealt with in some special way.

The argument 'line' contains the remainder of the buffer, starting with (at least some part) of the line which is too long. This may be more than one line, or may be only the initial portion of the line.

def lineReceived(self, line): (source)
overridden in `twisted.conch.scripts.cftp.StdioClient`, `twisted.conch.telnet.StatefulTelnetProtocol`, `twisted.internet.testing.LineSendingProtocol`, `twisted.mail.imap4.IMAP4Client`, `twisted.mail.imap4.IMAP4Server`, `twisted.mail.smtp.SMTPClient`, `twisted.positioning.nmea.NMEAProtocol`, `twisted.protocols.dict.DictClient`, `twisted.protocols.finger.Finger`, `twisted.protocols.ftp.FTP`, `twisted.protocols.ftp.FTPClientBasic`, `twisted.protocols.ftp.FTPFileListProtocol`, `twisted.protocols.memcache.MemCacheProtocol`, `twisted.protocols.postfix.PostfixTCPMapServer`, `twisted.protocols.sip.MessagesParser`, `twisted.runner.procmon.LineLogger`, `twisted.web._newclient.HTTPParser`, `twisted.web.http.HTTPChannel`, `twisted.web.http.HTTPClient`, `twisted.words.protocols.irc.DccChat`, `twisted.words.protocols.irc.IRCClient`
Override this for when each line is received.

Parameters
line:`bytes` | The line which was received with the delimiter removed.

def rawDataReceived(self, data): (source)
overridden in `twisted.mail.imap4.IMAP4Client`, `twisted.mail.imap4.IMAP4Server`, `twisted.protocols.memcache.MemCacheProtocol`, `twisted.protocols.sip.MessagesParser`, `twisted.web._newclient.HTTPParser`, `twisted.web.http.HTTPChannel`, `twisted.web.http.HTTPClient`
Override this for when raw data is received.
def sendLine(self, line): (source)
overridden in `twisted.mail.smtp.SMTPClient`, `twisted.protocols.dict.DictClient`, `twisted.protocols.ftp.FTP`, `twisted.protocols.ftp.FTPClientBasic`, `twisted.protocols.memcache.MemCacheProtocol`, `twisted.words.protocols.irc.IRCClient`
Sends a line to the other end of the connection.

Parameters
line:`bytes` | The line to send, not including the delimiter.

def setLineMode(self, extra=b''): (source)

Sets the line-mode of this receiver.

If you are calling this from a rawDataReceived callback, you can pass in extra unhandled data, and that data will be parsed for lines. Further data received will be sent to lineReceived rather than rawDataReceived.

Do not pass extra data if calling this function from within a lineReceived callback.

def setRawMode(self): (source)
Sets the raw mode of this receiver. Further data received will be sent to rawDataReceived rather than lineReceived.
MAX_LENGTH: `int` = (source)
overridden in `twisted.protocols.dict.DictClient`, `twisted.web.http.HTTPChannel`
The maximum length of a line to allow (If a sent line is longer than this, the connection is dropped). Default is 16384.

Value

    16384

delimiter: `bytes` = (source)
overridden in `twisted.conch.scripts.cftp.StdioClient`, `twisted.conch.telnet.StatefulTelnetProtocol`, `twisted.protocols.ftp.FTPFileListProtocol`, `twisted.protocols.postfix.PostfixTCPMapServer`, `twisted.runner.procmon.LineLogger`, `twisted.web._newclient.HTTPParser`, `twisted.words.protocols.irc.DccChat`, `twisted.words.protocols.irc.IRCClient`
The line-ending delimiter to use. By default this is `b'\r\n'`.
line_mode: `int` = (source)

Undocumented

_buffer: `bytes` = (source)

Undocumented

_busyReceiving: `bool` = (source)

Undocumented