Cura/HttpUploadDataStream.py
Jaime van Kessel 763206af32 Initial commit
2016-02-10 13:29:17 +01:00

32 lines
964 B
Python

from UM.Signal import Signal, SignalEmitter
class HttpUploadDataStream(SignalEmitter):
def __init__(self):
super().__init__()
self._data_list = []
self._total_length = 0
self._read_position = 0
progressSignal = Signal()
def write(self, data):
data = bytes(data,'UTF-8')
size = len(data)
if size < 1:
return
blocks = int(size / 2048)
for n in range(0, blocks):
self._data_list.append(data[n*2048:n*2048+2048])
self._data_list.append(data[blocks*2048:])
self._total_length += size
def read(self, size):
if self._read_position >= len(self._data_list):
return None
ret = self._data_list[self._read_position]
self._read_position += 1
self.progressSignal.emit(float(self._read_position) / float(len(self._data_list)))
return ret
def __len__(self):
return self._total_length