Python twisted.protocols.basic.LineReceiver() Examples
The following are 30
code examples of twisted.protocols.basic.LineReceiver().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
twisted.protocols.basic
, or try the search function
.
Example #1
Source File: imap4.py From BitTorrent with GNU General Public License v3.0 | 6 votes |
def rawDataReceived(self, data): if self.timeout > 0: self.resetTimeout() self._pendingSize -= len(data) if self._pendingSize > 0: self._pendingBuffer.write(data) else: passon = '' if self._pendingSize < 0: data, passon = data[:self._pendingSize], data[self._pendingSize:] self._pendingBuffer.write(data) rest = self._pendingBuffer self._pendingBuffer = None self._pendingSize = None rest.seek(0, 0) self._parts.append(rest.read()) self.setLineMode(passon.lstrip('\r\n')) # def sendLine(self, line): # print 'S:', repr(line) # return basic.LineReceiver.sendLine(self, line)
Example #2
Source File: irc.py From learn_python3_spider with MIT License | 6 votes |
def dataReceived(self, data): """ This hack is to support mIRC, which sends LF only, even though the RFC says CRLF. (Also, the flexibility of LineReceiver to turn "line mode" on and off was not required.) """ if isinstance(data, bytes): data = data.decode("utf-8") lines = (self.buffer + data).split(LF) # Put the (possibly empty) element after the last LF back in the # buffer self.buffer = lines.pop() for line in lines: if len(line) <= 2: # This is a blank line, at best. continue if line[-1] == CR: line = line[:-1] prefix, command, params = parsemsg(line) # mIRC is a big pile of doo-doo command = command.upper() # DEBUG: log.msg( "%s %s %s" % (prefix, command, params)) self.handleCommand(command, prefix, params)
Example #3
Source File: http.py From learn_python3_spider with MIT License | 6 votes |
def dataReceived(self, data): """ Data was received from the network. Process it. """ # If we're currently handling a request, buffer this data. if self._handlingRequest: self._dataBuffer.append(data) if ( (sum(map(len, self._dataBuffer)) > self._optimisticEagerReadSize) and not self._waitingForTransport ): # If we received more data than a small limit while processing # the head-of-line request, apply TCP backpressure to our peer # to get them to stop sending more request data until we're # ready. See docstring for _optimisticEagerReadSize above. self._networkProducer.pauseProducing() return return basic.LineReceiver.dataReceived(self, data)
Example #4
Source File: irc.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def dataReceived(self, data): """ This hack is to support mIRC, which sends LF only, even though the RFC says CRLF. (Also, the flexibility of LineReceiver to turn "line mode" on and off was not required.) """ if isinstance(data, bytes): data = data.decode("utf-8") lines = (self.buffer + data).split(LF) # Put the (possibly empty) element after the last LF back in the # buffer self.buffer = lines.pop() for line in lines: if len(line) <= 2: # This is a blank line, at best. continue if line[-1] == CR: line = line[:-1] prefix, command, params = parsemsg(line) # mIRC is a big pile of doo-doo command = command.upper() # DEBUG: log.msg( "%s %s %s" % (prefix, command, params)) self.handleCommand(command, prefix, params)
Example #5
Source File: test_basic.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_clearLineBuffer(self): """ L{LineReceiver.clearLineBuffer} removes all buffered data and returns it as a C{bytes} and can be called from beneath C{dataReceived}. """ class ClearingReceiver(basic.LineReceiver): def lineReceived(self, line): self.line = line self.rest = self.clearLineBuffer() protocol = ClearingReceiver() protocol.dataReceived(b'foo\r\nbar\r\nbaz') self.assertEqual(protocol.line, b'foo') self.assertEqual(protocol.rest, b'bar\r\nbaz') # Deliver another line to make sure the previously buffered data is # really gone. protocol.dataReceived(b'quux\r\n') self.assertEqual(protocol.line, b'quux') self.assertEqual(protocol.rest, b'')
Example #6
Source File: test_basic.py From learn_python3_spider with MIT License | 6 votes |
def test_notQuiteMaximumLineLengthUnfinished(self): """ C{LineReceiver} doesn't disconnect the transport it if receives a non-finished line whose length, counting the delimiter, is longer than its C{MAX_LENGTH} but shorter than its C{MAX_LENGTH} + len(delimiter). (When the first part that exceeds the max is the beginning of the delimiter.) """ proto = basic.LineReceiver() # '\r\n' is the default, but we set it just to be explicit in # this test. proto.delimiter = b'\r\n' transport = proto_helpers.StringTransport() proto.makeConnection(transport) proto.dataReceived((b'x' * proto.MAX_LENGTH) + proto.delimiter[:len(proto.delimiter)-1]) self.assertFalse(transport.disconnecting)
Example #7
Source File: imap4.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def rawDataReceived(self, data): if self.timeout > 0: self.resetTimeout() self._pendingSize -= len(data) if self._pendingSize > 0: self._pendingBuffer.write(data) else: passon = '' if self._pendingSize < 0: data, passon = data[:self._pendingSize], data[self._pendingSize:] self._pendingBuffer.write(data) rest = self._pendingBuffer self._pendingBuffer = None self._pendingSize = None rest.seek(0, 0) self._parts.append(rest.read()) self.setLineMode(passon.lstrip('\r\n')) # def sendLine(self, line): # print 'S:', repr(line) # return basic.LineReceiver.sendLine(self, line)
Example #8
Source File: test_basic.py From learn_python3_spider with MIT License | 6 votes |
def test_clearLineBuffer(self): """ L{LineReceiver.clearLineBuffer} removes all buffered data and returns it as a C{bytes} and can be called from beneath C{dataReceived}. """ class ClearingReceiver(basic.LineReceiver): def lineReceived(self, line): self.line = line self.rest = self.clearLineBuffer() protocol = ClearingReceiver() protocol.dataReceived(b'foo\r\nbar\r\nbaz') self.assertEqual(protocol.line, b'foo') self.assertEqual(protocol.rest, b'bar\r\nbaz') # Deliver another line to make sure the previously buffered data is # really gone. protocol.dataReceived(b'quux\r\n') self.assertEqual(protocol.line, b'quux') self.assertEqual(protocol.rest, b'')
Example #9
Source File: irc.py From BitTorrent with GNU General Public License v3.0 | 6 votes |
def dataReceived(self, data): """This hack is to support mIRC, which sends LF only, even though the RFC says CRLF. (Also, the flexibility of LineReceiver to turn "line mode" on and off was not required.) """ lines = (self.buffer + data).split(LF) # Put the (possibly empty) element after the last LF back in the # buffer self.buffer = lines.pop() for line in lines: if len(line) <= 2: # This is a blank line, at best. continue if line[-1] == CR: line = line[:-1] prefix, command, params = parsemsg(line) # mIRC is a big pile of doo-doo command = command.upper() # DEBUG: log.msg( "%s %s %s" % (prefix, command, params)) self.handleCommand(command, prefix, params)
Example #10
Source File: test_protocols.py From python-for-android with Apache License 2.0 | 6 votes |
def test_clearLineBuffer(self): """ L{LineReceiver.clearLineBuffer} removes all buffered data and returns it as a C{str} and can be called from beneath C{dataReceived}. """ class ClearingReceiver(basic.LineReceiver): def lineReceived(self, line): self.line = line self.rest = self.clearLineBuffer() protocol = ClearingReceiver() protocol.dataReceived('foo\r\nbar\r\nbaz') self.assertEqual(protocol.line, 'foo') self.assertEqual(protocol.rest, 'bar\r\nbaz') # Deliver another line to make sure the previously buffered data is # really gone. protocol.dataReceived('quux\r\n') self.assertEqual(protocol.line, 'quux') self.assertEqual(protocol.rest, '')
Example #11
Source File: irc.py From python-for-android with Apache License 2.0 | 6 votes |
def dataReceived(self, data): """ This hack is to support mIRC, which sends LF only, even though the RFC says CRLF. (Also, the flexibility of LineReceiver to turn "line mode" on and off was not required.) """ lines = (self.buffer + data).split(LF) # Put the (possibly empty) element after the last LF back in the # buffer self.buffer = lines.pop() for line in lines: if len(line) <= 2: # This is a blank line, at best. continue if line[-1] == CR: line = line[:-1] prefix, command, params = parsemsg(line) # mIRC is a big pile of doo-doo command = command.upper() # DEBUG: log.msg( "%s %s %s" % (prefix, command, params)) self.handleCommand(command, prefix, params)
Example #12
Source File: imap4.py From python-for-android with Apache License 2.0 | 6 votes |
def rawDataReceived(self, data): if self.timeout > 0: self.resetTimeout() self._pendingSize -= len(data) if self._pendingSize > 0: self._pendingBuffer.write(data) else: passon = '' if self._pendingSize < 0: data, passon = data[:self._pendingSize], data[self._pendingSize:] self._pendingBuffer.write(data) rest = self._pendingBuffer self._pendingBuffer = None self._pendingSize = None rest.seek(0, 0) self._parts.append(rest.read()) self.setLineMode(passon.lstrip('\r\n')) # def sendLine(self, line): # print 'S:', repr(line) # return basic.LineReceiver.sendLine(self, line)
Example #13
Source File: irc.py From python-for-android with Apache License 2.0 | 5 votes |
def dataReceived(self, data): basic.LineReceiver.dataReceived(self, data.replace('\r', ''))
Example #14
Source File: dict.py From python-for-android with Apache License 2.0 | 5 votes |
def sendLine(self, line): """Throw up if the line is longer than 1022 characters""" if len(line) > self.MAX_LENGTH - 2: raise ValueError("DictClient tried to send a too long line") basic.LineReceiver.sendLine(self, line)
Example #15
Source File: irc.py From python-for-android with Apache License 2.0 | 5 votes |
def _reallySendLine(self, line): return basic.LineReceiver.sendLine(self, lowQuote(line) + '\r')
Example #16
Source File: subpostgres.py From ccs-calendarserver with Apache License 2.0 | 5 votes |
def __init__(self, svc=None): self.lineReceiver = LineReceiver() self.lineReceiver.delimiter = '\n' self.lineReceiver.lineReceived = self.lineReceived self.svc = svc self.isReady = False self.completionDeferred = Deferred()
Example #17
Source File: recipe-286257.py From code with MIT License | 5 votes |
def connectionMade(self): basic.LineReceiver.connectionMade(self) self.expectingSalt = True
Example #18
Source File: smtp.py From learn_python3_spider with MIT License | 5 votes |
def sendLine(self, line): # Log sendLine only if you are in debug mode for performance if self.debug: self.log.append(b'>>> ' + line) basic.LineReceiver.sendLine(self,line)
Example #19
Source File: test_basic.py From learn_python3_spider with MIT License | 5 votes |
def test_maximumLineLengthRemaining(self): """ C{LineReceiver} disconnects the transport it if receives a non-finished line longer than its C{MAX_LENGTH}. """ proto = basic.LineReceiver() transport = proto_helpers.StringTransport() proto.makeConnection(transport) proto.dataReceived(b'x' * (proto.MAX_LENGTH + len(proto.delimiter))) self.assertTrue(transport.disconnecting)
Example #20
Source File: test_basic.py From learn_python3_spider with MIT License | 5 votes |
def test_maximumLineLength(self): """ C{LineReceiver} disconnects the transport if it receives a line longer than its C{MAX_LENGTH}. """ proto = basic.LineReceiver() transport = proto_helpers.StringTransport() proto.makeConnection(transport) proto.dataReceived(b'x' * (proto.MAX_LENGTH + 1) + b'\r\nr') self.assertTrue(transport.disconnecting)
Example #21
Source File: test_basic.py From learn_python3_spider with MIT License | 5 votes |
def test_multipleLongLines(self): """ If L{LineReceiver.dataReceived} is called with more than C{LineReceiver.MAX_LENGTH} bytes containing multiple line delimiters somewhere not in the first C{MAX_LENGTH} bytes, the entire byte string is passed to L{LineReceiver.lineLengthExceeded}. """ excessive = ( b'x' * (self.proto.MAX_LENGTH * 2 + 2) + self.proto.delimiter) * 2 self.proto.dataReceived(excessive) self.assertEqual([excessive], self.proto.longLines)
Example #22
Source File: ftp.py From python-for-android with Apache License 2.0 | 5 votes |
def lineReceived(self, line): self.resetTimeout() self.pauseProducing() def processFailed(err): if err.check(FTPCmdError): self.sendLine(err.value.response()) elif (err.check(TypeError) and err.value.args[0].find('takes exactly') != -1): self.reply(SYNTAX_ERR, "%s requires an argument." % (cmd,)) else: log.msg("Unexpected FTP error") log.err(err) self.reply(REQ_ACTN_NOT_TAKEN, "internal server error") def processSucceeded(result): if isinstance(result, tuple): self.reply(*result) elif result is not None: self.reply(result) def allDone(ignored): if not self.disconnected: self.resumeProducing() spaceIndex = line.find(' ') if spaceIndex != -1: cmd = line[:spaceIndex] args = (line[spaceIndex + 1:],) else: cmd = line args = () d = defer.maybeDeferred(self.processCommand, cmd, *args) d.addCallbacks(processSucceeded, processFailed) d.addErrback(log.err) # XXX It burnsss # LineReceiver doesn't let you resumeProducing inside # lineReceived atm from twisted.internet import reactor reactor.callLater(0, d.addBoth, allDone)
Example #23
Source File: ftp.py From python-for-android with Apache License 2.0 | 5 votes |
def sendLine(self, line): """ (Private) Sends a line, unless line is None. """ if line is None: return basic.LineReceiver.sendLine(self, line)
Example #24
Source File: test_basic.py From learn_python3_spider with MIT License | 5 votes |
def test_rawDataReceivedNotImplemented(self): """ When L{LineReceiver.rawDataReceived} is not overridden in a subclass, calling it raises C{NotImplementedError}. """ proto = basic.LineReceiver() self.assertRaises(NotImplementedError, proto.rawDataReceived, 'foo')
Example #25
Source File: smtp.py From python-for-android with Apache License 2.0 | 5 votes |
def sendLine(self, line): # Log sendLine only if you are in debug mode for performance if self.debug: self.log.append('>>> ' + line) basic.LineReceiver.sendLine(self,line)
Example #26
Source File: telnet.py From python-for-android with Apache License 2.0 | 5 votes |
def connectionLost(self, reason): basic.LineReceiver.connectionLost(self, reason) TelnetProtocol.connectionLost(self, reason)
Example #27
Source File: irc.py From BitTorrent with GNU General Public License v3.0 | 5 votes |
def _reallySendLine(self, line): return basic.LineReceiver.sendLine(self, lowQuote(line) + '\r')
Example #28
Source File: irc.py From BitTorrent with GNU General Public License v3.0 | 5 votes |
def dataReceived(self, data): basic.LineReceiver.dataReceived(self, data.replace('\r', ''))
Example #29
Source File: ftp.py From BitTorrent with GNU General Public License v3.0 | 5 votes |
def lineReceived(self, line): self.resetTimeout() self.pauseProducing() def processFailed(err): if err.check(FTPCmdError): self.sendLine(err.value.response()) elif (err.check(TypeError) and err.value.args[0].find('takes exactly') != -1): self.reply(SYNTAX_ERR, "%s requires an argument." % (cmd,)) else: log.msg("Unexpected FTP error") log.err(err) self.reply(REQ_ACTN_NOT_TAKEN, "internal server error") def processSucceeded(result): if isinstance(result, tuple): self.reply(*result) elif result is not None: self.reply(result) def allDone(ignored): if not self.disconnected: self.resumeProducing() spaceIndex = line.find(' ') if spaceIndex != -1: cmd = line[:spaceIndex] args = (line[spaceIndex + 1:],) else: cmd = line args = () d = defer.maybeDeferred(self.processCommand, cmd, *args) d.addCallbacks(processSucceeded, processFailed) d.addErrback(log.err) # XXX It burnsss # LineReceiver doesn't let you resumeProducing inside # lineReceived atm from twisted.internet import reactor reactor.callLater(0, d.addBoth, allDone)
Example #30
Source File: ftp.py From BitTorrent with GNU General Public License v3.0 | 5 votes |
def sendLine(self, line): """(Private) Sends a line, unless line is None.""" if line is None: return basic.LineReceiver.sendLine(self, line)