1
# Copyright 2005 Divmod, Inc. See LICENSE file for details
2
# -*- test-case-name: vertex.test.test_juice -*-
6
from twisted.internet.protocol import Protocol
8
class LineReceiver(Protocol):
11
MAX_LINE_LENGTH = 1024 * 1024
15
def lineReceived(self, line):
18
def rawDataReceived(self, data):
21
def setLineMode(self, extra=''):
24
self.dataReceived(extra)
26
def isDisconnecting(self):
27
if self.transport is None:
28
# XXX This _ought_ to be horribly broken but in fact it is
29
# not. TODO: Investigate further. -glyph
31
if self.transport.disconnecting:
38
def dataReceived(self, data):
41
delimiter = self.delimiter
45
end = buffer.find(delimiter, begin)
48
line = buffer[begin:end]
49
self.lineReceived(line)
50
if self.isDisconnecting():
53
begin = end + len(delimiter)
57
buffer = buffer[begin:]
60
if self.isDisconnecting():
63
self.rawDataReceived(buffer)