pos.py
1.06 KB
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
33
34
35
36
37
38
39
40
41
from . import Streamer as BaseStreamer
# 2 byte pertama size
# Dalam 1 request bisa saja ada 2 transaksi, bahkan
# bisa saja string transaksi yang belum lengkap
class Streamer(BaseStreamer):
def get_size(self, raw):
a, b = raw
a = ord(a)
b = ord(b) * 256
return a + b
# Override Stremer.get
def get(self, raw):
if self.size:
size = self.size - len(self.raw)
else:
raw = self.raw + raw
if len(raw) < 2:
self.raw = raw
return
size = self.size = self.get_size(raw[:2])
self.raw = b''
raw = raw[2:]
self.raw += raw[:size]
if len(self.raw) == self.size:
raw_iso = self.raw
self.size = 0
self.raw = raw[size:] # Sisa
return raw_iso
self.raw += raw[size:]
# Override Stremer.set
def set(self, raw):
size = len(raw)
a = size % 256
b = size / 256
header = bytes([a]) + bytes([b])
return header + raw