def run(self, network, address, source_file, transfer_id, timeout): self.progress = 0 while self.is_running: data = source_file.read(Network.STREAM_DATA_SIZE) d = { JSONKeys.TRANSFER_ID: transfer_id, JSONKeys.TRANSFER_DATA: bytes_to_b64(data), } if data: future = network.send(address, d, timeout) data_packet = future.result() if data_packet and data_packet.dict_obj.get( JSONKeys.TRANSFER_ID) == transfer_id: self.progress += len(data) else: d[JSONKeys.TRANSFER_DATA] = None network.send(address, d) break return self.progress
def test_conversion(self): self.assertEqual(bytes_to_b64(b'\xdd'), '3Q==') self.assertEqual(bytes_to_b32(b'\xdd'), '3U======') self.assertEqual(bytes_to_b16(b'\xdd'), 'DD') self.assertEqual(b64_to_bytes('3Q=='), b'\xdd') self.assertEqual(b32_to_bytes('3U======'), b'\xdd') self.assertEqual(b16_to_bytes('DD'), b'\xdd')
def new_sequence_id(self): '''Generate a new sequence ID. :rtype: ``str`` ''' return bytes_to_b64(os.urandom(Network.SEQUENCE_ID_SIZE))