* performance improvements
parent
4ec1ea41c2
commit
dfe6c493de
36
main.py
36
main.py
|
@ -15,7 +15,7 @@ headers = {"Authorization": "token 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",
|
|||
user = "DomiOwO"
|
||||
repo = "iwisoftware"
|
||||
files=[{}]
|
||||
files_buffers=[b""]
|
||||
files_buffers=[[]]
|
||||
|
||||
def getReleases():
|
||||
if not releases:
|
||||
|
@ -33,9 +33,10 @@ def allocateFd(path):
|
|||
global files, files_buffers
|
||||
fd = len(files)
|
||||
files += [{"path": path,
|
||||
"state": None # 0 - read, 1 - write
|
||||
"state": None, # 0 - read, 1 - write
|
||||
"len": 0
|
||||
}]
|
||||
files_buffers += [b""]
|
||||
files_buffers += [[]]
|
||||
return fd
|
||||
|
||||
class Passthrough(Operations):
|
||||
|
@ -206,29 +207,31 @@ class Passthrough(Operations):
|
|||
return allocateFd(path)
|
||||
|
||||
def read(self, path, length, offset, fh):
|
||||
f = files[h]
|
||||
f = files[fh]
|
||||
f["state"] = 0
|
||||
|
||||
print("-- read: offset ", offset, " len ", length, " path ", path)
|
||||
if offset == 0:
|
||||
fetch_len = 16384 # small buffer arrives like wroom
|
||||
else:
|
||||
fetch_len = 10485760 # big buffer goes whoosh
|
||||
if offset + length > len(files_buffers[fh]):
|
||||
print("buffer exhausted: ", len(files_buffers[fh]))
|
||||
#fetch_len = 524289 # small buffer arrives like wroom
|
||||
#if offset != 0:
|
||||
fetch_len = 10485760 # big buffer goes whoosh
|
||||
|
||||
print(len(files_buffers[fh]) + fetch_len)
|
||||
|
||||
if offset + length > f["len"]:
|
||||
print("buffer exhausted: ", f["len"])
|
||||
_h = headers
|
||||
_h["Range"] = "bytes=" + str(len(files_buffers[fh])) + "-" + str(len(files_buffers[fh]) + fetch_len)
|
||||
_h["Range"] = "bytes=" + str(f["len"]) + "-" + str(f["len"] + fetch_len - 1)
|
||||
f["len"] += fetch_len
|
||||
_h["Accept"] = "application/octet-stream"
|
||||
a = requests.get("https://api.github.com/repos/" + user + "/" + repo + "/releases/assets/" + str(assets[path.split("/")[-2]][path.split("/")[-1]]["id"]),
|
||||
headers = _h);
|
||||
files_buffers[fh] += a.content
|
||||
return files_buffers[fh][offset:offset+length]
|
||||
files_buffers[fh].append(bytes(a.content))
|
||||
return b''.join(files_buffers[fh])[offset:offset+length]
|
||||
|
||||
def write(self, path, buf, offset, fh):
|
||||
#print("-- write: offset ", offset, " path ", path)
|
||||
f = files[fh]
|
||||
f["state"] = 1
|
||||
files_buffers[fh] += buf
|
||||
files_buffers[fh].append(bytes(buf))
|
||||
return len(buf)
|
||||
|
||||
def truncate(self, path, length, fh=None):
|
||||
|
@ -253,13 +256,14 @@ class Passthrough(Operations):
|
|||
a = requests.post(
|
||||
"https://uploads.github.com/repos/" + user + "/" + repo + "/releases/" + str(id) + "/assets?name=" +
|
||||
path.split('/')[-1],
|
||||
data = files_buffers[fh],
|
||||
data = b''.join(files_buffers[fh]),
|
||||
headers = _h)
|
||||
print(a.content)
|
||||
res = a.json()
|
||||
print(assets[path.split('/')[-2]])
|
||||
if not assets[path.split('/')[-2]]:
|
||||
assets[path.split('/')[-2]]={}
|
||||
print(assets[path.split('/')[-2]])
|
||||
assets[path.split('/')[-2]][path.split('/')[-1]] = {"id": res["id"], "size": res["size"]}
|
||||
del(files[fh]) # idk, bad syntax?
|
||||
del(files_buffers[fh])
|
||||
|
|
Loading…
Reference in New Issue