mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-05-31 02:25:57 +08:00
32 lines
964 B
Python
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 |