83 lines
1.7 KiB
Python
83 lines
1.7 KiB
Python
import json
|
||
|
||
import mysql as sql
|
||
import prot_codec as pr
|
||
|
||
|
||
|
||
SQL=sql.sql()
|
||
SQL.init("test_data")
|
||
|
||
|
||
_DATA=None
|
||
|
||
# 获取文件夹目录,参数:无
|
||
def get_dirs_list():
|
||
r=SQL.show_tables()
|
||
j=[]
|
||
for item in r:
|
||
j.append(item[0])
|
||
js=json.dumps(j)
|
||
return js
|
||
|
||
|
||
# 获取文件列表,参数:json{文件的目录}
|
||
def get_files_list(j:bytearray):
|
||
SQL.table_name=json.loads(j)["dir"]
|
||
r=SQL.show()
|
||
js=json.dumps(r)
|
||
print(js)
|
||
return js
|
||
|
||
# 获取文件,参数:json{文件目录,文件序号}
|
||
def get_file_data(j:bytearray):
|
||
js=json.loads(j)
|
||
name,data=SQL.download_data(js["dir"],js["id"])
|
||
print(name,len(data))
|
||
global _DATA
|
||
_DATA=data
|
||
js=json.dumps({'name':name,"size":len(data)})
|
||
return js
|
||
|
||
# 获取指定长度的数据,参数:json{偏移,长度}
|
||
def get_data(j:bytearray):
|
||
js=json.loads(j)
|
||
off=js["off"]
|
||
length=js["len"]
|
||
if(off<len(_DATA)):
|
||
data=_DATA[off:]
|
||
if(length<len(data)):
|
||
return data[:length]
|
||
else:
|
||
return data
|
||
return bytearray()
|
||
|
||
_cmd_list={
|
||
"get_dirs":get_dirs_list,
|
||
"get_files":get_files_list,
|
||
"get_file":get_file_data,
|
||
"get_data":get_data,
|
||
}
|
||
|
||
|
||
if __name__ == '__main__':
|
||
|
||
# dirs_str=get_dirs()
|
||
# data=pr.encode(b"dirs",dirs_str.encode("utf-8"))
|
||
# print(data.hex(' '))
|
||
# print(pr.decode(data))
|
||
# files=_cmd_list["get_files"](b"checker_host_app")
|
||
# print(json.loads(files))
|
||
# print(list(_cmd_list.keys()))
|
||
data=_cmd_list["get_file"](json.dumps({"dir":"checker_host_app","id":42}))
|
||
print(data)
|
||
ret=bytearray()
|
||
off=0
|
||
while off<len(_DATA):
|
||
ret+=_cmd_list["get_data"](json.dumps({"off":off,"len":200}))
|
||
off+=200
|
||
if(ret==_DATA):
|
||
print("check success")
|
||
else:
|
||
print("check failed")
|