blob: 6bd99a1865e4cc1b5b6a392d792743f771b0076e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
class TerminatorScanner(object):
def __init__(self, terminator=None):
self.in_buffer = ''
self.terminator = terminator
def handle_read(self, data):
self.in_buffer = self.in_buffer + data
terminator_len = len(self.terminator)
while True:
index = self.in_buffer.find(self.terminator)
if index < 0:
break
incoming = self.in_buffer[:index]
self.in_buffer = self.in_buffer[index+terminator_len:]
self.handle_incoming(incoming)
def handle_incoming(self, data):
raise NotImplementedError('must be implemented in subclass')
class TerminatorScannerBasic(TerminatorScanner):
def __init__(self, terminator=None):
super(TerminatorScannerBasic, self).__init__(terminator)
self.incoming = []
def handle_incoming(self, data):
self.incoming.append(data)
|