@salang/sa 0.1.2 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/sa.js +19 -1
- package/package.json +8 -7
- package/sa_std/alloc/layout.sal +12 -0
- package/sa_std/alloc/prelude.sa +1 -0
- package/sa_std/alloc/prelude.sal +1 -0
- package/sa_std/alloc/string.sa +3 -0
- package/sa_std/alloc/vec.sa +684 -0
- package/sa_std/alloc/vec.sal +4 -0
- package/sa_std/any.sa +130 -0
- package/sa_std/any.sal +23 -0
- package/sa_std/array.sa +1876 -0
- package/sa_std/ascii.sa +2 -0
- package/sa_std/ascii.sal +1 -0
- package/sa_std/async.sla +116 -0
- package/sa_std/binary_heap.sa +3003 -0
- package/sa_std/binary_heap.sal +7 -0
- package/sa_std/borrow.sa +171 -0
- package/sa_std/borrow.sal +13 -0
- package/sa_std/btree_map.sa +2210 -0
- package/sa_std/btree_map.sal +11 -0
- package/sa_std/btree_set.sa +1072 -0
- package/sa_std/btree_set.sal +6 -0
- package/sa_std/char.sa +1309 -0
- package/sa_std/char.sal +50 -0
- package/sa_std/cmp.sa +554 -0
- package/sa_std/cmp.sal +14 -0
- package/sa_std/collections/binary_heap.sa +1 -0
- package/sa_std/collections/btree_map.sa +1 -0
- package/sa_std/collections/btree_set.sa +1 -0
- package/sa_std/collections/hashmap.sa +1 -0
- package/sa_std/collections/hashset.sa +1 -0
- package/sa_std/collections/linked_list.sa +1120 -0
- package/sa_std/collections/linked_list.sal +10 -0
- package/sa_std/collections/prelude.sa +7 -0
- package/sa_std/collections/prelude.sal +1 -0
- package/sa_std/collections/vec_deque.sa +1 -0
- package/sa_std/collections.sal +13 -0
- package/sa_std/convert.sa +1115 -0
- package/sa_std/convert.sal +24 -0
- package/sa_std/core/arc.sa +233 -0
- package/sa_std/core/arc.sal +4 -0
- package/sa_std/core/ascii.sa +784 -0
- package/sa_std/core/ascii.sal +34 -0
- package/sa_std/core/bit.sa +41 -0
- package/sa_std/core/box.sa +1 -0
- package/sa_std/core/box.sal +2 -0
- package/sa_std/core/cell.sa +108 -0
- package/sa_std/core/cell.sal +5 -0
- package/sa_std/core/cleanup.sa +26 -0
- package/sa_std/core/control.sa +20 -0
- package/sa_std/core/derive.sa +60 -0
- package/sa_std/core/derive.sal +1 -0
- package/sa_std/core/dispatch.sa +7 -0
- package/sa_std/core/dispatch.sal +5 -0
- package/sa_std/core/future.sa +777 -0
- package/sa_std/core/future.sal +73 -0
- package/sa_std/core/hash.sa +48 -0
- package/sa_std/core/iter.sa +2805 -0
- package/sa_std/core/iter.sal +4 -0
- package/sa_std/core/loop.sa +60 -0
- package/sa_std/core/mem.sa +220 -0
- package/sa_std/core/option.sa +825 -0
- package/sa_std/core/option.sal +11 -0
- package/sa_std/core/panic.sa +23 -0
- package/sa_std/core/panic.sal +12 -0
- package/sa_std/core/prelude.sa +18 -0
- package/sa_std/core/prelude.sal +18 -0
- package/sa_std/core/rc.sa +225 -0
- package/sa_std/core/rc.sal +4 -0
- package/sa_std/core/refcell.sa +283 -0
- package/sa_std/core/refcell.sal +13 -0
- package/sa_std/core/result.sa +708 -0
- package/sa_std/core/result.sal +6 -0
- package/sa_std/core/rust_patterns.sal +295 -0
- package/sa_std/core/sa_core.sa +84 -0
- package/sa_std/core/slice.sa +4021 -0
- package/sa_std/core/slice.sal +7 -0
- package/sa_std/core/task.sa +112 -0
- package/sa_std/core/task.sal +15 -0
- package/sa_std/core/trait_object.sa +26 -0
- package/sa_std/core/trait_object.sal +4 -0
- package/sa_std/core/waker.sa +289 -0
- package/sa_std/core/waker.sal +31 -0
- package/sa_std/core/weak.sa +2 -0
- package/sa_std/core/weak.sal +4 -0
- package/sa_std/cow.sa +3 -0
- package/sa_std/cow.sal +2 -0
- package/sa_std/cstring.sa +3 -0
- package/sa_std/cstring.sal +2 -0
- package/sa_std/default.sa +99 -0
- package/sa_std/duration.sa +3 -0
- package/sa_std/duration.sal +2 -0
- package/sa_std/encoding/json.sa +259 -0
- package/sa_std/encoding/json.sai +54 -0
- package/sa_std/encoding/json.sal +35 -0
- package/sa_std/encoding/prelude.sa +1 -0
- package/sa_std/encoding/prelude.sal +0 -0
- package/sa_std/env.sa +390 -0
- package/sa_std/env.sai +25 -0
- package/sa_std/error.sa +253 -0
- package/sa_std/error.sal +44 -0
- package/sa_std/ffi/cstring.sa +3 -0
- package/sa_std/ffi/cstring.sal +1 -0
- package/sa_std/ffi/prelude.sa +2 -0
- package/sa_std/ffi/prelude.sal +2 -0
- package/sa_std/ffi.sa +635 -0
- package/sa_std/ffi.sal +51 -0
- package/sa_std/fmt.sa +2 -0
- package/sa_std/fmt.sai +18 -0
- package/sa_std/fmt.sal +35 -0
- package/sa_std/fs.sa +1023 -0
- package/sa_std/fs.sai +127 -0
- package/sa_std/fs.sal +51 -0
- package/sa_std/future.sa +2 -0
- package/sa_std/future.sal +1 -0
- package/sa_std/hash.sa +1486 -0
- package/sa_std/hash.sal +13 -0
- package/sa_std/hashmap.sa +1962 -0
- package/sa_std/hashmap.sal +20 -0
- package/sa_std/hashset.sa +1004 -0
- package/sa_std/hashset.sal +18 -0
- package/sa_std/http2.sa +78 -0
- package/sa_std/http2.sai +26 -0
- package/sa_std/http2.sal +36 -0
- package/sa_std/instant.sa +3 -0
- package/sa_std/instant.sal +2 -0
- package/sa_std/io/buf_reader.sa +43 -0
- package/sa_std/io/buf_writer.sa +35 -0
- package/sa_std/io/bufio.sa +4 -0
- package/sa_std/io/bufio.sal +4 -0
- package/sa_std/io/prelude.sa +1 -0
- package/sa_std/io/prelude.sal +1 -0
- package/sa_std/io/print.sa +2 -0
- package/sa_std/io/print.sai +3 -0
- package/sa_std/io.sa +925 -0
- package/sa_std/io.sai +25 -0
- package/sa_std/io.sal +84 -0
- package/sa_std/iter.sa +2 -0
- package/sa_std/iter.sal +1 -0
- package/sa_std/join_handle.sa +3 -0
- package/sa_std/join_handle.sal +2 -0
- package/sa_std/libsa_async.sa +80 -0
- package/sa_std/m_async.sa +137 -0
- package/sa_std/m_async.sal +30 -0
- package/sa_std/m_async.sla +2 -0
- package/sa_std/manually_drop.sa +3 -0
- package/sa_std/manually_drop.sal +2 -0
- package/sa_std/marker/phantom_data.sa +3 -0
- package/sa_std/marker/phantom_data.sal +1 -0
- package/sa_std/marker/prelude.sa +4 -0
- package/sa_std/marker/prelude.sal +4 -0
- package/sa_std/marker.sa +220 -0
- package/sa_std/marker.sal +15 -0
- package/sa_std/math.sa +84 -0
- package/sa_std/math.sai +10 -0
- package/sa_std/mem/manually_drop.sa +3 -0
- package/sa_std/mem/manually_drop.sal +1 -0
- package/sa_std/mem/prelude.sa +2 -0
- package/sa_std/mem/prelude.sal +2 -0
- package/sa_std/mem.sa +564 -0
- package/sa_std/mem.sal +40 -0
- package/sa_std/modstate.sai +19 -0
- package/sa_std/net.sa +4227 -0
- package/sa_std/net.sai +239 -0
- package/sa_std/net.sal +159 -0
- package/sa_std/netx.sa +85 -0
- package/sa_std/netx.sai +11 -0
- package/sa_std/netx.sal +39 -0
- package/sa_std/nonzero.sa +3 -0
- package/sa_std/nonzero.sal +2 -0
- package/sa_std/num/nonzero.sa +3 -0
- package/sa_std/num/nonzero.sal +1 -0
- package/sa_std/num/prelude.sa +3 -0
- package/sa_std/num/prelude.sal +3 -0
- package/sa_std/num.sa +17302 -0
- package/sa_std/num.sai +11 -0
- package/sa_std/num.sal +341 -0
- package/sa_std/ops.sa +1884 -0
- package/sa_std/ops.sal +68 -0
- package/sa_std/option.sa +2 -0
- package/sa_std/option.sal +1 -0
- package/sa_std/os/fd.sa +96 -0
- package/sa_std/os/fd.sai +7 -0
- package/sa_std/os/fd.sal +11 -0
- package/sa_std/os/prelude.sa +2 -0
- package/sa_std/os/prelude.sal +1 -0
- package/sa_std/os/unix_ffi.sa +271 -0
- package/sa_std/panic.sa +1 -0
- package/sa_std/panic.sal +1 -0
- package/sa_std/path.sa +3170 -0
- package/sa_std/path.sal +12 -0
- package/sa_std/phantom_data.sa +3 -0
- package/sa_std/phantom_data.sal +2 -0
- package/sa_std/pin.sa +79 -0
- package/sa_std/pin.sal +5 -0
- package/sa_std/plugin_async.sa +90 -0
- package/sa_std/plugin_async.sal +29 -0
- package/sa_std/plugin_async.sla +4 -0
- package/sa_std/plugin_http_async.sa +46 -0
- package/sa_std/plugin_http_server.sa +61 -0
- package/sa_std/plugin_http_server.sla +2 -0
- package/sa_std/plugin_sqlite.sa +106 -0
- package/sa_std/plugin_sqlite.sla +2 -0
- package/sa_std/prelude.sa +60 -0
- package/sa_std/prelude.sal +55 -0
- package/sa_std/process.sa +916 -0
- package/sa_std/process.sai +57 -0
- package/sa_std/process.sal +27 -0
- package/sa_std/ptr.sa +503 -0
- package/sa_std/ptr.sal +2 -0
- package/sa_std/result.sa +2 -0
- package/sa_std/result.sal +1 -0
- package/sa_std/rust_core.sa +51 -0
- package/sa_std/rust_core.sal +26 -0
- package/sa_std/sa.mod +7 -0
- package/sa_std/sort.sa +156 -0
- package/sa_std/str.sla +13 -0
- package/sa_std/string.sa +12240 -0
- package/sa_std/string.sai +25 -0
- package/sa_std/string.sal +17 -0
- package/sa_std/string_format.sa +269 -0
- package/sa_std/sync/atomic.sa +1500 -0
- package/sa_std/sync/atomic.sal +45 -0
- package/sa_std/sync/barrier.sa +105 -0
- package/sa_std/sync/barrier.sal +7 -0
- package/sa_std/sync/condvar.sa +240 -0
- package/sa_std/sync/condvar.sal +4 -0
- package/sa_std/sync/mpsc.sa +758 -0
- package/sa_std/sync/mpsc.sal +42 -0
- package/sa_std/sync/mpsc_list.sa +255 -0
- package/sa_std/sync/mpsc_list.sal +3 -0
- package/sa_std/sync/mutex.sa +182 -0
- package/sa_std/sync/mutex.sal +7 -0
- package/sa_std/sync/once.sa +371 -0
- package/sa_std/sync/once.sal +31 -0
- package/sa_std/sync/poison.sa +36 -0
- package/sa_std/sync/poison.sal +11 -0
- package/sa_std/sync/prelude.sa +8 -0
- package/sa_std/sync/prelude.sal +7 -0
- package/sa_std/sync/rwlock.sa +369 -0
- package/sa_std/sync/rwlock.sal +13 -0
- package/sa_std/task.sa +2 -0
- package/sa_std/task.sal +1 -0
- package/sa_std/term.sa +2 -0
- package/sa_std/term.sai +10 -0
- package/sa_std/term.sal +33 -0
- package/sa_std/testing/assert.sai +4 -0
- package/sa_std/testing/mock_io.sa +174 -0
- package/sa_std/testing/mock_io.sal +5 -0
- package/sa_std/testing/prelude.sa +2 -0
- package/sa_std/testing/prelude.sal +1 -0
- package/sa_std/text/prelude.sa +1 -0
- package/sa_std/text/prelude.sal +1 -0
- package/sa_std/text/regex.sa +2 -0
- package/sa_std/text/regex.sai +9 -0
- package/sa_std/text/regex.sal +33 -0
- package/sa_std/thread/join_handle.sa +3 -0
- package/sa_std/thread/join_handle.sal +1 -0
- package/sa_std/thread/prelude.sa +4 -0
- package/sa_std/thread/prelude.sal +3 -0
- package/sa_std/thread.sa +160 -0
- package/sa_std/thread.sai +11 -0
- package/sa_std/thread.sal +4 -0
- package/sa_std/thread_local.sa +45 -0
- package/sa_std/thread_local.sai +9 -0
- package/sa_std/time/duration.sa +3 -0
- package/sa_std/time/duration.sal +1 -0
- package/sa_std/time/instant.sa +3 -0
- package/sa_std/time/instant.sal +1 -0
- package/sa_std/time/prelude.sa +4 -0
- package/sa_std/time/prelude.sal +4 -0
- package/sa_std/time.sa +850 -0
- package/sa_std/time.sai +37 -0
- package/sa_std/time.sal +35 -0
- package/sa_std/time.sla +67 -0
- package/sa_std/tls_client.sai +39 -0
- package/sa_std/vec.sa +5754 -0
- package/sa_std/vec.sal +1 -0
- package/sa_std/vec_deque.sa +4925 -0
- package/sa_std/vec_deque.sal +8 -0
- package/sa_std/vec_runtime_macros.sa +11 -0
- package/sa_std/ws_client.sai +57 -0
package/sa_std/time.sai
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// SA-facing contracts for monotonic, system, and UTC time helpers.
|
|
2
|
+
// Time values are exposed as raw integers; the UTC calendar helper writes into SaTimeDate.
|
|
3
|
+
@extern sa_time_instant_ns() -> u64
|
|
4
|
+
@extern sa_time_unix_s() -> i64
|
|
5
|
+
@extern sa_time_unix_ms() -> i64
|
|
6
|
+
@extern sa_time_unix_ns() -> i64
|
|
7
|
+
// Runtime returns plain i32 status (not Fallible {status,value}); match that ABI.
|
|
8
|
+
@extern sa_time_utc_now(&out: ptr) -> i32
|
|
9
|
+
@extern sa_time_sleep_ns(ns: u64) -> i32
|
|
10
|
+
@extern sa_time_sleep_ms(ms: u64) -> i32
|
|
11
|
+
// JS Date.toISOString shape for an i64 unix-millis value (UTC, millis
|
|
12
|
+
// precision, fresh buffer handle read back via sa_fmt_buffer_data/len).
|
|
13
|
+
@extern sa_time_iso_from_unix_ms(ms: i64) -> u64
|
|
14
|
+
// Strict-ISO Date.parse: `YYYY-MM-DD`, optional `THH:MM:SS[.sss]`,
|
|
15
|
+
// optional `Z`/`±HH:MM` (date-only means UTC midnight, like JS).
|
|
16
|
+
// Returns plain i32 status (0 ok, 1 invalid); anything else
|
|
17
|
+
// (RFC2822, 2-digit years, words) is out of the subset.
|
|
18
|
+
@extern sa_time_parse_iso(&iso: ptr, len: u64, &out_ms: ptr) -> i32
|
|
19
|
+
// Date getters over i64 unix millis (UTC; JS month 0-based, Sunday 0).
|
|
20
|
+
@extern sa_time_get_full_year(ms: i64) -> i64
|
|
21
|
+
@extern sa_time_get_month(ms: i64) -> i64
|
|
22
|
+
@extern sa_time_get_date(ms: i64) -> i64
|
|
23
|
+
@extern sa_time_get_hours(ms: i64) -> i64
|
|
24
|
+
@extern sa_time_get_minutes(ms: i64) -> i64
|
|
25
|
+
@extern sa_time_get_seconds(ms: i64) -> i64
|
|
26
|
+
@extern sa_time_get_milliseconds(ms: i64) -> i64
|
|
27
|
+
@extern sa_time_get_day(ms: i64) -> i64
|
|
28
|
+
// Date setters over i64 unix millis (field 0..6 = FullYear..Milliseconds,
|
|
29
|
+
// month 0-based in). Out-of-range components roll over like JS (month 13
|
|
30
|
+
// -> next January, date 0 -> last of previous month, hours 25 -> +1 day).
|
|
31
|
+
// Returns the new millis; unknown field ids return the input unchanged.
|
|
32
|
+
@extern sa_time_set_field(ms: i64, field: u64, value: i64) -> i64
|
|
33
|
+
// Fixed UTC string forms (fmt 0..3 = toString/toDateString/toTimeString/
|
|
34
|
+
// toUTCString); byte-exact with Node under UTC (including the
|
|
35
|
+
// "(Coordinated Universal Time)" suffix). Unknown fmt yields an empty
|
|
36
|
+
// handle (frontends only send 0..3 via fixed table extras).
|
|
37
|
+
@extern sa_time_format_utc(ms: i64, fmt: u64) -> u64
|
package/sa_std/time.sal
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#def Time_NS_PER_US = 1000
|
|
2
|
+
#def Time_NS_PER_MS = 1000000
|
|
3
|
+
#def Time_NS_PER_S = 1000000000
|
|
4
|
+
#def Time_MS_PER_S = 1000
|
|
5
|
+
#def Time_S_PER_MIN = 60
|
|
6
|
+
#def Time_S_PER_HOUR = 3600
|
|
7
|
+
#def Time_S_PER_DAY = 86400
|
|
8
|
+
#def Time_S_PER_WEEK = 604800
|
|
9
|
+
#def TimeDate_SIZE = 32
|
|
10
|
+
#def TimeDate_unix_ms = +0
|
|
11
|
+
#def TimeDate_unix_ns = +8
|
|
12
|
+
#def TimeDate_year = +16
|
|
13
|
+
#def TimeDate_month = +18
|
|
14
|
+
#def TimeDate_day = +19
|
|
15
|
+
#def TimeDate_hour = +20
|
|
16
|
+
#def TimeDate_minute = +21
|
|
17
|
+
#def TimeDate_second = +22
|
|
18
|
+
#def TimeDate_millisecond = +24
|
|
19
|
+
|
|
20
|
+
#def Duration_SIZE = 8
|
|
21
|
+
#def Duration_nanos = +0
|
|
22
|
+
#def DURATION_ZERO = 0
|
|
23
|
+
#def DURATION_MIN = 0
|
|
24
|
+
#def DURATION_MAX = 18446744073709551615
|
|
25
|
+
|
|
26
|
+
#def Instant_SIZE = 8
|
|
27
|
+
#def Instant_nanos = +0
|
|
28
|
+
|
|
29
|
+
#def SystemTime_SIZE = 8
|
|
30
|
+
#def SystemTime_nanos = +0
|
|
31
|
+
#def SYSTEM_TIME_UNIX_EPOCH = 0
|
|
32
|
+
|
|
33
|
+
#def SystemTimeError_SIZE = 8
|
|
34
|
+
#def SystemTimeError_ALIGN = 8
|
|
35
|
+
#def SystemTimeError_duration = +0
|
package/sa_std/time.sla
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
@import "sa_std/time.sa"
|
|
2
|
+
@import "sa_std/core/result.sa"
|
|
3
|
+
|
|
4
|
+
struct Duration {
|
|
5
|
+
ns: u64,
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
impl Duration {
|
|
9
|
+
fn from_millis(ms: u64) -> Duration {
|
|
10
|
+
let ns: u64 = TIME_DURATION_FROM_MILLIS(ms);
|
|
11
|
+
return Duration { ns: ns };
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
fn as_millis(self) -> u64 {
|
|
15
|
+
let ms: u64 = TIME_DURATION_AS_MILLIS(self.ns);
|
|
16
|
+
return ms;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
struct Instant {
|
|
21
|
+
ns: u64,
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
impl Instant {
|
|
25
|
+
fn now() -> Instant {
|
|
26
|
+
let ns: u64 = TIME_NOW_NS();
|
|
27
|
+
return Instant { ns: ns };
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
fn from_raw_ns(ns: u64) -> Instant {
|
|
31
|
+
return Instant { ns: ns };
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
fn raw_ns(self) -> u64 {
|
|
35
|
+
return self.ns;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
fn elapsed(self) -> Duration {
|
|
39
|
+
let ns: u64 = TIME_INSTANT_ELAPSED(self.ns);
|
|
40
|
+
return Duration { ns: ns };
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
struct SystemTime {
|
|
45
|
+
ms: u64,
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
impl SystemTime {
|
|
49
|
+
fn now() -> SystemTime {
|
|
50
|
+
let ms: u64 = TIME_NOW_UNIX_MS();
|
|
51
|
+
return SystemTime { ms: ms };
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
fn unix_epoch() -> SystemTime {
|
|
55
|
+
return SystemTime { ms: 0 };
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
fn duration_since(self, earlier: SystemTime) -> Result<Duration, i32> {
|
|
59
|
+
let elapsed_ms: u64 = self.ms - earlier.ms;
|
|
60
|
+
let ns: u64 = TIME_DURATION_FROM_MILLIS(elapsed_ms);
|
|
61
|
+
return Ok(Duration { ns: ns });
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
fn thread_sleep(duration: Duration) -> void {
|
|
66
|
+
TIME_THREAD_SLEEP_NS(duration.ns);
|
|
67
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// sa_std TLS-client surface — real std.crypto.tls backend living in the sci runtime.
|
|
2
|
+
//
|
|
3
|
+
// A TLS client connection is an opaque u64 handle (0 == invalid). connect()
|
|
4
|
+
// performs the TCP dial and the TLS handshake in one call and always verifies
|
|
5
|
+
// the peer: the hostname is sent as SNI and checked against the peer
|
|
6
|
+
// certificate, and the chain is verified against the process-wide CA bundle
|
|
7
|
+
// (OS trust store, optionally extended with sa_std_tls_client_add_ca_file).
|
|
8
|
+
// There is no verification-disabled mode.
|
|
9
|
+
//
|
|
10
|
+
// Error codes: 0 = OK; negative = error (-1 unsupported, -5 I/O,
|
|
11
|
+
// -12 out of memory, -22 invalid argument, -100 certificate verification
|
|
12
|
+
// failure). close() consumes the handle.
|
|
13
|
+
//
|
|
14
|
+
// String/JSON outputs are returned as registered u64 buffer handles, following
|
|
15
|
+
// the same convention as sa_std.fs.read_* and sa_std.http2: read bytes/length
|
|
16
|
+
// with sa_std_tls_client_buffer_data / sa_std_tls_client_buffer_len and
|
|
17
|
+
// release with sa_std_tls_client_buffer_free.
|
|
18
|
+
|
|
19
|
+
@extern sa_std_tls_client_supported(&out_supported: ptr) -> i32
|
|
20
|
+
|
|
21
|
+
@extern sa_std_tls_client_connect(&host: ptr, host_len: u64, port: u32, &out_handle: ptr) -> i32
|
|
22
|
+
|
|
23
|
+
@extern sa_std_tls_client_add_ca_file(&path: ptr, path_len: u64) -> i32
|
|
24
|
+
// Trust-anchor rule (std.crypto.Bundle): the bundle keeps only the FIRST
|
|
25
|
+
// certificate seen for a given subject name. Pinning a second, different
|
|
26
|
+
// certificate with an identical subject is silently ignored -- it returns
|
|
27
|
+
// OK but changes nothing. Regenerate with a distinguishing subject field
|
|
28
|
+
// if you must re-pin.
|
|
29
|
+
|
|
30
|
+
@extern sa_std_tls_client_read(handle: u64, &buf: ptr, cap: u64, &out_read: ptr) -> i32
|
|
31
|
+
@extern sa_std_tls_client_write(handle: u64, &buf: ptr, len: u64, &out_written: ptr) -> i32
|
|
32
|
+
@extern sa_std_tls_client_close(handle: u64) -> i32
|
|
33
|
+
|
|
34
|
+
@extern sa_std_tls_client_status_json(&out_handle: ptr) -> i32
|
|
35
|
+
|
|
36
|
+
// buffer handle accessors (sci convention)
|
|
37
|
+
@extern sa_std_tls_client_buffer_data(buffer: u64) -> &ptr
|
|
38
|
+
@extern sa_std_tls_client_buffer_len(buffer: u64) -> u64
|
|
39
|
+
@extern sa_std_tls_client_buffer_free(^buffer: u64) -> i32
|