修正了部分代码的表达方式,最后可用版本,mlirlite 已基本完善
This commit is contained in:
1 parent
0d77b68cc4
commit
0f556463e7
116 files changed
+13896
-4938
No files matched your search
+28
-28
@@ -34,9 +34,9 @@ HTTPS_PORT: t.CDefine = 443
|
||||
# 模块内部状态
|
||||
_ossl_ready: bool = False
|
||||
_socket_ready: bool = False
|
||||
_err_store: t.CArray[t.CChar, 512] # 最近一次失败原因(静态缓冲)
|
||||
_info_store: t.CArray[t.CChar, 512] # 最近一次成功握手的 TLS 元信息
|
||||
_scratch_store: t.CArray[t.CChar, 512] # 临时拼接缓冲
|
||||
_err_store: t.CArray[char, 512] # 最近一次失败原因(静态缓冲)
|
||||
_info_store: t.CArray[char, 512] # 最近一次成功握手的 TLS 元信息
|
||||
_scratch_store: t.CArray[char, 512] # 临时拼接缓冲
|
||||
_last_verify_val: INT = -1 # 最近一次握手后 SSL_get_verify_result(0=通过;-1=未启用)
|
||||
_last_verify_flag: INT = -1 # 最近一次请求 verify 标志(1=开启;0=关闭;-1=未知)
|
||||
|
||||
@@ -48,12 +48,12 @@ _last_verify_flag: INT = -1 # 最近一次请求 verify 标志(1=
|
||||
# _st_status: HTTP 状态码(失败网络路径为负错误码)
|
||||
# ============================================================
|
||||
STREAM_CAP: t.CDefine = 262144
|
||||
_st_buf: t.CArray[t.CChar, 262144]
|
||||
_st_len: t.CSizeT = 0
|
||||
_st_consumed: t.CSizeT = 0
|
||||
_st_buf: t.CArray[char, 262144]
|
||||
_st_len: sizet = 0
|
||||
_st_consumed: sizet = 0
|
||||
_st_state: INT = 0
|
||||
_st_status: INT = 0
|
||||
_st_err: t.CArray[t.CChar, 512]
|
||||
_st_err: t.CArray[char, 512]
|
||||
|
||||
|
||||
def stream_begin():
|
||||
@@ -76,12 +76,12 @@ def stream_pull(out: str, cap: INT) -> INT:
|
||||
avail = INT(_st_len - _st_consumed)
|
||||
if avail > cap - 1:
|
||||
avail = cap - 1
|
||||
i: t.CSizeT = 0
|
||||
while i < t.CSizeT(avail):
|
||||
i: sizet = 0
|
||||
while i < sizet(avail):
|
||||
out[i] = _st_buf[_st_consumed + i]
|
||||
i += 1
|
||||
out[t.CSizeT(avail)] = 0
|
||||
_st_consumed += t.CSizeT(avail)
|
||||
out[sizet(avail)] = 0
|
||||
_st_consumed += sizet(avail)
|
||||
return avail
|
||||
|
||||
|
||||
@@ -251,8 +251,8 @@ def _HttpsRequest(method: str, url: str, verify: bool, ca_file: str, data: str,
|
||||
return None
|
||||
|
||||
# ---- 解析 URL ----
|
||||
host_buf: t.CArray[t.CChar, 256]
|
||||
path_buf: t.CArray[t.CChar, 1024]
|
||||
host_buf: t.CArray[char, 256]
|
||||
path_buf: t.CArray[char, 1024]
|
||||
port: INT = 0
|
||||
|
||||
if _ParseHttpsUrl(url, host_buf, 256, path_buf, 1024, c.Addr(port)) != 0:
|
||||
@@ -433,7 +433,7 @@ def _HttpsRequest(method: str, url: str, verify: bool, ca_file: str, data: str,
|
||||
|
||||
# ---- 接收响应(缓冲自动翻倍增长, 支持 MB 级正文, 如 MNIST .gz 下载) ----
|
||||
resp_cap: INT = requests.HTTP_BUFSIZ
|
||||
resp_buf: str = requests._mbuddy.alloc(t.CSizeT(resp_cap))
|
||||
resp_buf: str = requests._mbuddy.alloc(sizet(resp_cap))
|
||||
if resp_buf is None:
|
||||
_RecordErrorText("alloc response buffer failed")
|
||||
openssl.SSL_free(ssl)
|
||||
@@ -451,7 +451,7 @@ def _HttpsRequest(method: str, url: str, verify: bool, ca_file: str, data: str,
|
||||
if resp_cap >= 268435456:
|
||||
break
|
||||
resp_cap = resp_cap * 2
|
||||
nb: t.CPtr = requests._mbuddy.realloc(resp_buf, t.CSizeT(resp_cap))
|
||||
nb: t.CPtr = requests._mbuddy.realloc(resp_buf, sizet(resp_cap))
|
||||
if nb is None:
|
||||
_RecordErrorText("realloc response buffer failed")
|
||||
requests._mbuddy.free(resp_buf)
|
||||
@@ -461,7 +461,7 @@ def _HttpsRequest(method: str, url: str, verify: bool, ca_file: str, data: str,
|
||||
requests._mbuddy.free(errmsg)
|
||||
requests.release(resp)
|
||||
return None
|
||||
resp_buf = t.CChar(t.CUInt64T(nb), t.CPtr)
|
||||
resp_buf = char(t.CUInt64T(nb), t.CPtr)
|
||||
room = resp_cap - 1 - total
|
||||
n: INT = openssl.SSL_read(ssl, resp_buf + total, room)
|
||||
if n <= 0:
|
||||
@@ -623,10 +623,10 @@ def _StreamAppendContent(txt: str):
|
||||
global _st_len
|
||||
if txt is None:
|
||||
return
|
||||
pos: t.CSizeT = _st_len
|
||||
i: t.CSizeT = 0
|
||||
pos: sizet = _st_len
|
||||
i: sizet = 0
|
||||
while txt[i] != 0:
|
||||
if pos >= t.CSizeT(STREAM_CAP) - 1:
|
||||
if pos >= sizet(STREAM_CAP) - 1:
|
||||
break
|
||||
_st_buf[pos] = txt[i]
|
||||
pos += 1
|
||||
@@ -666,8 +666,8 @@ def post_stream(url: str, data: str, content_type: str = "application/json",
|
||||
if errmsg is None:
|
||||
return -1
|
||||
|
||||
host_buf: t.CArray[t.CChar, 256]
|
||||
path_buf: t.CArray[t.CChar, 1024]
|
||||
host_buf: t.CArray[char, 256]
|
||||
path_buf: t.CArray[char, 1024]
|
||||
port: INT = 0
|
||||
if _ParseHttpsUrl(url, host_buf, 256, path_buf, 1024, c.Addr(port)) != 0:
|
||||
stdio.snprintf(errmsg, 512, "bad https url: %s", url)
|
||||
@@ -822,7 +822,7 @@ def post_stream(url: str, data: str, content_type: str = "application/json",
|
||||
return -1
|
||||
jpool: rawptr[memhub.MemPool] = memhub.MemPool(pmem, 524288)
|
||||
|
||||
leftover: t.CArray[t.CChar, 16384]
|
||||
leftover: t.CArray[char, 16384]
|
||||
llen: INT = 0
|
||||
header_done: INT = 0
|
||||
status_code: INT = 0
|
||||
@@ -929,10 +929,10 @@ def post_stream(url: str, data: str, content_type: str = "application/json",
|
||||
# -3 其它失败(last_error() 查看原因)。
|
||||
# ============================================================
|
||||
|
||||
def _DlOnce(url: str, start: t.CSizeT, count: INT, verify: bool, ca_file: str,
|
||||
def _DlOnce(url: str, start: sizet, count: INT, verify: bool, ca_file: str,
|
||||
dst: str, dst_cap: INT, out_status: INT | t.CPtr,
|
||||
out_loc: str, out_loccap: INT,
|
||||
out_total: t.CSizeT | t.CPtr) -> INT:
|
||||
out_total: sizet*) -> INT:
|
||||
"""HTTPS 单次 Range 拉取(线程安全,见模块注释)。"""
|
||||
global _last_verify_val, _last_verify_flag
|
||||
if url is None or dst is None or dst_cap <= 0 \
|
||||
@@ -947,8 +947,8 @@ def _DlOnce(url: str, start: t.CSizeT, count: INT, verify: bool, ca_file: str,
|
||||
if _EnsureReady() != 0:
|
||||
return -3
|
||||
|
||||
host_buf: t.CArray[t.CChar, 256]
|
||||
path_buf: t.CArray[t.CChar, 1024]
|
||||
host_buf: t.CArray[char, 256]
|
||||
path_buf: t.CArray[char, 1024]
|
||||
port: INT = 0
|
||||
if _ParseHttpsUrl(url, host_buf, 256, path_buf, 1024, c.Addr(port)) != 0:
|
||||
_RecordErrorText("bad https url")
|
||||
@@ -1023,7 +1023,7 @@ def _DlOnce(url: str, start: t.CSizeT, count: INT, verify: bool, ca_file: str,
|
||||
cnt: INT = count
|
||||
if cnt < 0:
|
||||
cnt = 0
|
||||
end: t.CSizeT = start + t.CSizeT(cnt) - 1
|
||||
end: sizet = start + sizet(cnt) - 1
|
||||
if cnt <= 0:
|
||||
end = start
|
||||
stdio.snprintf(req, 1024,
|
||||
@@ -1082,7 +1082,7 @@ def _DlOnce(url: str, start: t.CSizeT, count: INT, verify: bool, ca_file: str,
|
||||
else:
|
||||
cl2: INT = requests._CLenOf(dst, total)
|
||||
if cl2 > 0:
|
||||
c.Set(c.Deref(out_total), t.CSizeT(cl2))
|
||||
c.Set(c.Deref(out_total), sizet(cl2))
|
||||
bo: INT = requests._FindBodyStart(dst, total)
|
||||
if bo < 0 or bo >= total:
|
||||
return 0
|
||||
|
||||
Reference in new issue
Block a user