def getFileParts(self, row, ids): """""" done = False if len(ids) >= row[self.idxu.index.PARTS]: for i, uid in enumerate(ids): d = Sys.datetime.now() self.idxu.ih.getAttachment(uid, self.inbox, True) Sys.pwlog( [ (" part ", Const.CLZ_0), (str(i + 1).rjust(2, " "), Const.CLZ_2), (" / ", Const.CLZ_0), (str(len(ids)), Const.CLZ_3), (" downloaded in ", Const.CLZ_0), (Sys.getDelta(d), Const.CLZ_4, True), ] ) Sys.cli_emit_progress(int((i + 1) * 100 / len(ids))) Sys.sleep(0.5) Sys.mkdir_p(self.deploy + row[self.idxu.index.CATG]) Sys.cli_emit_progress(100)
def sendFile(self, data, retry=False): """""" done = None key = None if data is not None: key, label, ext, count, catg, hlst, usr, ownerHash, sha256, size = data self.idxu.index.addUser(usr, ownerHash) account = self.idxu.switchFileAccount() sendIds = [] cancel = False d = None Sys.cli_emit_progress(0) Sys.sleep(0.2) if not retry: Sys.pwlog( [ (" Sending... ", Const.CLZ_7), (" (", Const.CLZ_0), ( " ~" + Sys.readableBytes(Sys.getsize(self.outbox + hlst["data"][0][1] + Kirmah.EXT)), Const.CLZ_3, ), (" per msg ) ", Const.CLZ_0, True), ] ) else: Sys.pwlog( [ (" Retry sending last file... ", Const.CLZ_0), (label + ext, Const.CLZ_7), (" (" + catg + ")", Const.CLZ_3, True), ] ) ignore = False for i, row in enumerate(hlst["data"]): """""" if retry: if not Io.file_exists(self.outbox + row[1] + Kirmah.EXT): continue elif not ignore: Sys.pwlog([(" Ignoring file 1 to " + str(i), Const.CLZ_1, True)]) ignore = True d = Sys.datetime.now() msg = self.idxu.mb.build(usr, "all", hlst["head"][2], self.outbox + row[1] + Kirmah.EXT) try: mid = self.idxu.ih.send(msg.as_string(), self.rootBox) except Exception as e: Sys.pwarn((("addFile : ", (str(e), Sys.CLZ_WARN_PARAM), " !"),)) Sys.echo("waiting 5 s and retry") Sys.sleep(5) # force reconnect self.impst.idxu.switchFileAccount(account, True) # retry mid = self.idxu.ih.send(msg.as_string(), self.rootBox) finally: if not mid is None: status, resp = self.idxu.ih.fetch(mid[1], "(UID BODYSTRUCTURE)", True) if status == self.idxu.ih.OK: sendIds.append((mid[1], row)) Sys.pwlog( [ (" part ", Const.CLZ_0), (str(row[0]).rjust(2, "0"), Const.CLZ_2), (" sent as msg ", Const.CLZ_0), (str(mid[1]).rjust(5, "0"), Const.CLZ_1), (" (", Const.CLZ_7), (str(int(row[4]) + 1).rjust(2, "0"), Const.CLZ_2), ("/", Const.CLZ_7), (str(count), Const.CLZ_3), (") in ", Const.CLZ_7), (Sys.getDelta(d), Const.CLZ_4, True), ] ) Sys.cli_emit_progress(int((i + 1) * 100 / len(hlst["data"]))) Sys.removeFile(self.outbox + row[1] + Kirmah.EXT) else: Sys.pwarn((("error occured when sending part ", (row[0], Sys.Clz.fgb3), " !"),)) diff = self.checkSendIds(sendIds, hlst["head"][2]) if len(sendIds) == count or retry: self.idxu.get(True) self.idxu.index.add(key, label, hlst["head"][1], ext, ownerHash, catg, sha256, size, account) done = self.idxu.update() Io.removeFile(self.addmapPath + Kirmah.EXT) # resending missing parts else: Sys.pwarn((("TODO => must resending ", ("missing", Sys.CLZ_WARN_PARAM), " parts"),)) print(diff) # clean for mid, row in sendIds: if Io.file_exists(self.outbox + row[1] + Kirmah.EXT): Sys.removeFile(self.outbox + row[1] + Kirmah.EXT) if cancel: delids = [mid for mid, row in senids] print(delids) self.idxu.ih.delete(delids, True) return done, key