internal/wasi: regenerate WASI 0.2 bindings

Use go.bytecodealliance.org/cmd/wit-bindgen-go@v0.6.0
This commit is contained in:
Randy Reddig
2025-03-15 22:02:04 -07:00
committed by Ron Evans
parent 429aea8e74
commit 211425c3e9
93 changed files with 158 additions and 2191 deletions
File diff suppressed because it is too large Load Diff
View File
View File
View File
View File
View File
View File
+1 -1
View File
@@ -15,7 +15,7 @@ import (
// //
//go:nosplit //go:nosplit
func Exit(status cm.BoolResult) { func Exit(status cm.BoolResult) {
status0 := cm.BoolToU32(status) status0 := (uint32)(cm.BoolToU32(status))
wasmimport_Exit((uint32)(status0)) wasmimport_Exit((uint32)(status0))
return return
} }
View File
View File
+1 -1
View File
@@ -12,6 +12,6 @@ import (
//export wasi:cli/run@0.2.0#run //export wasi:cli/run@0.2.0#run
func wasmexport_Run() (result0 uint32) { func wasmexport_Run() (result0 uint32) {
result := Exports.Run() result := Exports.Run()
result0 = cm.BoolToU32(result) result0 = (uint32)(cm.BoolToU32(result))
return return
} }
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
+3 -3
View File
@@ -31,9 +31,9 @@ import (
// nanoseconds: u32, // nanoseconds: u32,
// } // }
type DateTime struct { type DateTime struct {
_ cm.HostLayout _ cm.HostLayout `json:"-"`
Seconds uint64 Seconds uint64 `json:"seconds"`
Nanoseconds uint32 Nanoseconds uint32 `json:"nanoseconds"`
} }
// Now represents the imported function "now". // Now represents the imported function "now".
View File
View File
View File
+1 -1
View File
@@ -30,7 +30,7 @@ func lower_NewTimestamp(v NewTimestamp) (f0 uint32, f1 uint64, f2 uint32) {
f0 = (uint32)(v.Tag()) f0 = (uint32)(v.Tag())
switch f0 { switch f0 {
case 2: // timestamp case 2: // timestamp
v1, v2 := lower_DateTime(*v.Timestamp()) v1, v2 := lower_DateTime(*cm.Case[DateTime](&v, 2))
f1 = (uint64)(v1) f1 = (uint64)(v1)
f2 = (uint32)(v2) f2 = (uint32)(v2)
} }
View File
View File
+61 -22
View File
@@ -106,7 +106,7 @@ const (
DescriptorTypeSocket DescriptorTypeSocket
) )
var stringsDescriptorType = [8]string{ var _DescriptorTypeStrings = [8]string{
"unknown", "unknown",
"block-device", "block-device",
"character-device", "character-device",
@@ -119,9 +119,22 @@ var stringsDescriptorType = [8]string{
// String implements [fmt.Stringer], returning the enum case name of e. // String implements [fmt.Stringer], returning the enum case name of e.
func (e DescriptorType) String() string { func (e DescriptorType) String() string {
return stringsDescriptorType[e] return _DescriptorTypeStrings[e]
} }
// MarshalText implements [encoding.TextMarshaler].
func (e DescriptorType) MarshalText() ([]byte, error) {
return []byte(e.String()), nil
}
// UnmarshalText implements [encoding.TextUnmarshaler], unmarshaling into an enum
// case. Returns an error if the supplied text is not one of the enum cases.
func (e *DescriptorType) UnmarshalText(text []byte) error {
return _DescriptorTypeUnmarshalCase(e, text)
}
var _DescriptorTypeUnmarshalCase = cm.CaseUnmarshaler[DescriptorType](_DescriptorTypeStrings[:])
// DescriptorFlags represents the flags "wasi:filesystem/types@0.2.0#descriptor-flags". // DescriptorFlags represents the flags "wasi:filesystem/types@0.2.0#descriptor-flags".
// //
// Descriptor flags. // Descriptor flags.
@@ -246,34 +259,34 @@ type LinkCount uint64
// status-change-timestamp: option<datetime>, // status-change-timestamp: option<datetime>,
// } // }
type DescriptorStat struct { type DescriptorStat struct {
_ cm.HostLayout _ cm.HostLayout `json:"-"`
// File type. // File type.
Type DescriptorType Type DescriptorType `json:"type"`
// Number of hard links to the file. // Number of hard links to the file.
LinkCount LinkCount LinkCount LinkCount `json:"link-count"`
// For regular files, the file size in bytes. For symbolic links, the // For regular files, the file size in bytes. For symbolic links, the
// length in bytes of the pathname contained in the symbolic link. // length in bytes of the pathname contained in the symbolic link.
Size FileSize Size FileSize `json:"size"`
// Last data access timestamp. // Last data access timestamp.
// //
// If the `option` is none, the platform doesn't maintain an access // If the `option` is none, the platform doesn't maintain an access
// timestamp for this file. // timestamp for this file.
DataAccessTimestamp cm.Option[DateTime] DataAccessTimestamp cm.Option[DateTime] `json:"data-access-timestamp"`
// Last data modification timestamp. // Last data modification timestamp.
// //
// If the `option` is none, the platform doesn't maintain a // If the `option` is none, the platform doesn't maintain a
// modification timestamp for this file. // modification timestamp for this file.
DataModificationTimestamp cm.Option[DateTime] DataModificationTimestamp cm.Option[DateTime] `json:"data-modification-timestamp"`
// Last file status-change timestamp. // Last file status-change timestamp.
// //
// If the `option` is none, the platform doesn't maintain a // If the `option` is none, the platform doesn't maintain a
// status-change timestamp for this file. // status-change timestamp for this file.
StatusChangeTimestamp cm.Option[DateTime] StatusChangeTimestamp cm.Option[DateTime] `json:"status-change-timestamp"`
} }
// NewTimestamp represents the variant "wasi:filesystem/types@0.2.0#new-timestamp". // NewTimestamp represents the variant "wasi:filesystem/types@0.2.0#new-timestamp".
@@ -326,7 +339,7 @@ func (self *NewTimestamp) Timestamp() *DateTime {
return cm.Case[DateTime](self, 2) return cm.Case[DateTime](self, 2)
} }
var stringsNewTimestamp = [3]string{ var _NewTimestampStrings = [3]string{
"no-change", "no-change",
"now", "now",
"timestamp", "timestamp",
@@ -334,7 +347,7 @@ var stringsNewTimestamp = [3]string{
// String implements [fmt.Stringer], returning the variant case name of v. // String implements [fmt.Stringer], returning the variant case name of v.
func (v NewTimestamp) String() string { func (v NewTimestamp) String() string {
return stringsNewTimestamp[v.Tag()] return _NewTimestampStrings[v.Tag()]
} }
// DirectoryEntry represents the record "wasi:filesystem/types@0.2.0#directory-entry". // DirectoryEntry represents the record "wasi:filesystem/types@0.2.0#directory-entry".
@@ -346,12 +359,12 @@ func (v NewTimestamp) String() string {
// name: string, // name: string,
// } // }
type DirectoryEntry struct { type DirectoryEntry struct {
_ cm.HostLayout _ cm.HostLayout `json:"-"`
// The type of the file referred to by this directory entry. // The type of the file referred to by this directory entry.
Type DescriptorType Type DescriptorType `json:"type"`
// The name of the object. // The name of the object.
Name string Name string `json:"name"`
} }
// ErrorCode represents the enum "wasi:filesystem/types@0.2.0#error-code". // ErrorCode represents the enum "wasi:filesystem/types@0.2.0#error-code".
@@ -516,7 +529,7 @@ const (
ErrorCodeCrossDevice ErrorCodeCrossDevice
) )
var stringsErrorCode = [37]string{ var _ErrorCodeStrings = [37]string{
"access", "access",
"would-block", "would-block",
"already", "already",
@@ -558,9 +571,22 @@ var stringsErrorCode = [37]string{
// String implements [fmt.Stringer], returning the enum case name of e. // String implements [fmt.Stringer], returning the enum case name of e.
func (e ErrorCode) String() string { func (e ErrorCode) String() string {
return stringsErrorCode[e] return _ErrorCodeStrings[e]
} }
// MarshalText implements [encoding.TextMarshaler].
func (e ErrorCode) MarshalText() ([]byte, error) {
return []byte(e.String()), nil
}
// UnmarshalText implements [encoding.TextUnmarshaler], unmarshaling into an enum
// case. Returns an error if the supplied text is not one of the enum cases.
func (e *ErrorCode) UnmarshalText(text []byte) error {
return _ErrorCodeUnmarshalCase(e, text)
}
var _ErrorCodeUnmarshalCase = cm.CaseUnmarshaler[ErrorCode](_ErrorCodeStrings[:])
// Advice represents the enum "wasi:filesystem/types@0.2.0#advice". // Advice represents the enum "wasi:filesystem/types@0.2.0#advice".
// //
// File or memory access pattern advisory information. // File or memory access pattern advisory information.
@@ -601,7 +627,7 @@ const (
AdviceNoReuse AdviceNoReuse
) )
var stringsAdvice = [6]string{ var _AdviceStrings = [6]string{
"normal", "normal",
"sequential", "sequential",
"random", "random",
@@ -612,9 +638,22 @@ var stringsAdvice = [6]string{
// String implements [fmt.Stringer], returning the enum case name of e. // String implements [fmt.Stringer], returning the enum case name of e.
func (e Advice) String() string { func (e Advice) String() string {
return stringsAdvice[e] return _AdviceStrings[e]
} }
// MarshalText implements [encoding.TextMarshaler].
func (e Advice) MarshalText() ([]byte, error) {
return []byte(e.String()), nil
}
// UnmarshalText implements [encoding.TextUnmarshaler], unmarshaling into an enum
// case. Returns an error if the supplied text is not one of the enum cases.
func (e *Advice) UnmarshalText(text []byte) error {
return _AdviceUnmarshalCase(e, text)
}
var _AdviceUnmarshalCase = cm.CaseUnmarshaler[Advice](_AdviceStrings[:])
// MetadataHashValue represents the record "wasi:filesystem/types@0.2.0#metadata-hash-value". // MetadataHashValue represents the record "wasi:filesystem/types@0.2.0#metadata-hash-value".
// //
// A 128-bit hash value, split into parts because wasm doesn't have a // A 128-bit hash value, split into parts because wasm doesn't have a
@@ -625,12 +664,12 @@ func (e Advice) String() string {
// upper: u64, // upper: u64,
// } // }
type MetadataHashValue struct { type MetadataHashValue struct {
_ cm.HostLayout _ cm.HostLayout `json:"-"`
// 64 bits of a 128-bit hash value. // 64 bits of a 128-bit hash value.
Lower uint64 Lower uint64 `json:"lower"`
// Another 64 bits of a 128-bit hash value. // Another 64 bits of a 128-bit hash value.
Upper uint64 Upper uint64 `json:"upper"`
} }
// Descriptor represents the imported resource "wasi:filesystem/types@0.2.0#descriptor". // Descriptor represents the imported resource "wasi:filesystem/types@0.2.0#descriptor".
@@ -761,7 +800,7 @@ func (self Descriptor) IsSameObject(other Descriptor) (result bool) {
self0 := cm.Reinterpret[uint32](self) self0 := cm.Reinterpret[uint32](self)
other0 := cm.Reinterpret[uint32](other) other0 := cm.Reinterpret[uint32](other)
result0 := wasmimport_DescriptorIsSameObject((uint32)(self0), (uint32)(other0)) result0 := wasmimport_DescriptorIsSameObject((uint32)(self0), (uint32)(other0))
result = cm.U32ToBool((uint32)(result0)) result = (bool)(cm.U32ToBool((uint32)(result0)))
return return
} }
View File
View File
View File
View File
+1 -1
View File
@@ -57,7 +57,7 @@ func (self Pollable) Block() {
func (self Pollable) Ready() (result bool) { func (self Pollable) Ready() (result bool) {
self0 := cm.Reinterpret[uint32](self) self0 := cm.Reinterpret[uint32](self)
result0 := wasmimport_PollableReady((uint32)(self0)) result0 := wasmimport_PollableReady((uint32)(self0))
result = cm.U32ToBool((uint32)(result0)) result = (bool)(cm.U32ToBool((uint32)(result0)))
return return
} }
@@ -1,12 +0,0 @@
// Code generated by wit-bindgen-go. DO NOT EDIT.
package streams
import (
"unsafe"
)
// StreamErrorShape is used for storage in variant or result types.
type StreamErrorShape struct {
shape [unsafe.Sizeof(StreamError{})]byte
}
View File
View File
+15 -15
View File
@@ -64,14 +64,14 @@ func (self *StreamError) Closed() bool {
return self.Tag() == 1 return self.Tag() == 1
} }
var stringsStreamError = [2]string{ var _StreamErrorStrings = [2]string{
"last-operation-failed", "last-operation-failed",
"closed", "closed",
} }
// String implements [fmt.Stringer], returning the variant case name of v. // String implements [fmt.Stringer], returning the variant case name of v.
func (v StreamError) String() string { func (v StreamError) String() string {
return stringsStreamError[v.Tag()] return _StreamErrorStrings[v.Tag()]
} }
// InputStream represents the imported resource "wasi:io/streams@0.2.0#input-stream". // InputStream represents the imported resource "wasi:io/streams@0.2.0#input-stream".
@@ -273,13 +273,13 @@ func (self OutputStream) BlockingSplice(src InputStream, len_ uint64) (result cm
// //
// let pollable = this.subscribe(); // let pollable = this.subscribe();
// while !contents.is_empty() { // while !contents.is_empty() {
// // Wait for the stream to become writable // // Wait for the stream to become writable
// pollable.block(); // pollable.block();
// let Ok(n) = this.check-write(); // eliding error handling // let Ok(n) = this.check-write(); // eliding error handling
// let len = min(n, contents.len()); // let len = min(n, contents.len());
// let (chunk, rest) = contents.split_at(len); // let (chunk, rest) = contents.split_at(len);
// this.write(chunk ); // eliding error handling // this.write(chunk ); // eliding error handling
// contents = rest; // contents = rest;
// } // }
// this.flush(); // this.flush();
// // Wait for completion of `flush` // // Wait for completion of `flush`
@@ -309,12 +309,12 @@ func (self OutputStream) BlockingWriteAndFlush(contents cm.List[uint8]) (result
// //
// let pollable = this.subscribe(); // let pollable = this.subscribe();
// while num_zeroes != 0 { // while num_zeroes != 0 {
// // Wait for the stream to become writable // // Wait for the stream to become writable
// pollable.block(); // pollable.block();
// let Ok(n) = this.check-write(); // eliding error handling // let Ok(n) = this.check-write(); // eliding error handling
// let len = min(n, num_zeroes); // let len = min(n, num_zeroes);
// this.write-zeroes(len); // eliding error handling // this.write-zeroes(len); // eliding error handling
// num_zeroes -= len; // num_zeroes -= len;
// } // }
// this.flush(); // this.flush();
// // Wait for completion of `flush` // // Wait for completion of `flush`
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
+42 -16
View File
@@ -153,7 +153,7 @@ const (
ErrorCodePermanentResolverFailure ErrorCodePermanentResolverFailure
) )
var stringsErrorCode = [21]string{ var _ErrorCodeStrings = [21]string{
"unknown", "unknown",
"access-denied", "access-denied",
"not-supported", "not-supported",
@@ -179,9 +179,22 @@ var stringsErrorCode = [21]string{
// String implements [fmt.Stringer], returning the enum case name of e. // String implements [fmt.Stringer], returning the enum case name of e.
func (e ErrorCode) String() string { func (e ErrorCode) String() string {
return stringsErrorCode[e] return _ErrorCodeStrings[e]
} }
// MarshalText implements [encoding.TextMarshaler].
func (e ErrorCode) MarshalText() ([]byte, error) {
return []byte(e.String()), nil
}
// UnmarshalText implements [encoding.TextUnmarshaler], unmarshaling into an enum
// case. Returns an error if the supplied text is not one of the enum cases.
func (e *ErrorCode) UnmarshalText(text []byte) error {
return _ErrorCodeUnmarshalCase(e, text)
}
var _ErrorCodeUnmarshalCase = cm.CaseUnmarshaler[ErrorCode](_ErrorCodeStrings[:])
// IPAddressFamily represents the enum "wasi:sockets/network@0.2.0#ip-address-family". // IPAddressFamily represents the enum "wasi:sockets/network@0.2.0#ip-address-family".
// //
// enum ip-address-family { // enum ip-address-family {
@@ -198,16 +211,29 @@ const (
IPAddressFamilyIPv6 IPAddressFamilyIPv6
) )
var stringsIPAddressFamily = [2]string{ var _IPAddressFamilyStrings = [2]string{
"ipv4", "ipv4",
"ipv6", "ipv6",
} }
// String implements [fmt.Stringer], returning the enum case name of e. // String implements [fmt.Stringer], returning the enum case name of e.
func (e IPAddressFamily) String() string { func (e IPAddressFamily) String() string {
return stringsIPAddressFamily[e] return _IPAddressFamilyStrings[e]
} }
// MarshalText implements [encoding.TextMarshaler].
func (e IPAddressFamily) MarshalText() ([]byte, error) {
return []byte(e.String()), nil
}
// UnmarshalText implements [encoding.TextUnmarshaler], unmarshaling into an enum
// case. Returns an error if the supplied text is not one of the enum cases.
func (e *IPAddressFamily) UnmarshalText(text []byte) error {
return _IPAddressFamilyUnmarshalCase(e, text)
}
var _IPAddressFamilyUnmarshalCase = cm.CaseUnmarshaler[IPAddressFamily](_IPAddressFamilyStrings[:])
// IPv4Address represents the tuple "wasi:sockets/network@0.2.0#ipv4-address". // IPv4Address represents the tuple "wasi:sockets/network@0.2.0#ipv4-address".
// //
// type ipv4-address = tuple<u8, u8, u8, u8> // type ipv4-address = tuple<u8, u8, u8, u8>
@@ -246,14 +272,14 @@ func (self *IPAddress) IPv6() *IPv6Address {
return cm.Case[IPv6Address](self, 1) return cm.Case[IPv6Address](self, 1)
} }
var stringsIPAddress = [2]string{ var _IPAddressStrings = [2]string{
"ipv4", "ipv4",
"ipv6", "ipv6",
} }
// String implements [fmt.Stringer], returning the variant case name of v. // String implements [fmt.Stringer], returning the variant case name of v.
func (v IPAddress) String() string { func (v IPAddress) String() string {
return stringsIPAddress[v.Tag()] return _IPAddressStrings[v.Tag()]
} }
// IPv4SocketAddress represents the record "wasi:sockets/network@0.2.0#ipv4-socket-address". // IPv4SocketAddress represents the record "wasi:sockets/network@0.2.0#ipv4-socket-address".
@@ -263,12 +289,12 @@ func (v IPAddress) String() string {
// address: ipv4-address, // address: ipv4-address,
// } // }
type IPv4SocketAddress struct { type IPv4SocketAddress struct {
_ cm.HostLayout _ cm.HostLayout `json:"-"`
// sin_port // sin_port
Port uint16 Port uint16 `json:"port"`
// sin_addr // sin_addr
Address IPv4Address Address IPv4Address `json:"address"`
} }
// IPv6SocketAddress represents the record "wasi:sockets/network@0.2.0#ipv6-socket-address". // IPv6SocketAddress represents the record "wasi:sockets/network@0.2.0#ipv6-socket-address".
@@ -280,18 +306,18 @@ type IPv4SocketAddress struct {
// scope-id: u32, // scope-id: u32,
// } // }
type IPv6SocketAddress struct { type IPv6SocketAddress struct {
_ cm.HostLayout _ cm.HostLayout `json:"-"`
// sin6_port // sin6_port
Port uint16 Port uint16 `json:"port"`
// sin6_flowinfo // sin6_flowinfo
FlowInfo uint32 FlowInfo uint32 `json:"flow-info"`
// sin6_addr // sin6_addr
Address IPv6Address Address IPv6Address `json:"address"`
// sin6_scope_id // sin6_scope_id
ScopeID uint32 ScopeID uint32 `json:"scope-id"`
} }
// IPSocketAddress represents the variant "wasi:sockets/network@0.2.0#ip-socket-address". // IPSocketAddress represents the variant "wasi:sockets/network@0.2.0#ip-socket-address".
@@ -322,12 +348,12 @@ func (self *IPSocketAddress) IPv6() *IPv6SocketAddress {
return cm.Case[IPv6SocketAddress](self, 1) return cm.Case[IPv6SocketAddress](self, 1)
} }
var stringsIPSocketAddress = [2]string{ var _IPSocketAddressStrings = [2]string{
"ipv4", "ipv4",
"ipv6", "ipv6",
} }
// String implements [fmt.Stringer], returning the variant case name of v. // String implements [fmt.Stringer], returning the variant case name of v.
func (v IPSocketAddress) String() string { func (v IPSocketAddress) String() string {
return stringsIPSocketAddress[v.Tag()] return _IPSocketAddressStrings[v.Tag()]
} }
View File
+3 -3
View File
@@ -23,7 +23,7 @@ type TupleInputStreamOutputStreamShape struct {
// IPSocketAddressShape is used for storage in variant or result types. // IPSocketAddressShape is used for storage in variant or result types.
type IPSocketAddressShape struct { type IPSocketAddressShape struct {
_ cm.HostLayout _ cm.HostLayout
shape [unsafe.Sizeof(network.IPSocketAddress{})]byte shape [unsafe.Sizeof(IPSocketAddress{})]byte
} }
func lower_IPv4Address(v network.IPv4Address) (f0 uint32, f1 uint32, f2 uint32, f3 uint32) { func lower_IPv4Address(v network.IPv4Address) (f0 uint32, f1 uint32, f2 uint32, f3 uint32) {
@@ -64,14 +64,14 @@ func lower_IPSocketAddress(v network.IPSocketAddress) (f0 uint32, f1 uint32, f2
f0 = (uint32)(v.Tag()) f0 = (uint32)(v.Tag())
switch f0 { switch f0 {
case 0: // ipv4 case 0: // ipv4
v1, v2, v3, v4, v5 := lower_IPv4SocketAddress(*v.IPv4()) v1, v2, v3, v4, v5 := lower_IPv4SocketAddress(*cm.Case[network.IPv4SocketAddress](&v, 0))
f1 = (uint32)(v1) f1 = (uint32)(v1)
f2 = (uint32)(v2) f2 = (uint32)(v2)
f3 = (uint32)(v3) f3 = (uint32)(v3)
f4 = (uint32)(v4) f4 = (uint32)(v4)
f5 = (uint32)(v5) f5 = (uint32)(v5)
case 1: // ipv6 case 1: // ipv6
v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11 := lower_IPv6SocketAddress(*v.IPv6()) v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11 := lower_IPv6SocketAddress(*cm.Case[network.IPv6SocketAddress](&v, 1))
f1 = (uint32)(v1) f1 = (uint32)(v1)
f2 = (uint32)(v2) f2 = (uint32)(v2)
f3 = (uint32)(v3) f3 = (uint32)(v3)
View File
+1 -1
View File
@@ -46,7 +46,7 @@ func wasmimport_TCPSocketKeepAliveCount(self0 uint32, result *cm.Result[uint32,
//go:wasmimport wasi:sockets/tcp@0.2.0 [method]tcp-socket.keep-alive-enabled //go:wasmimport wasi:sockets/tcp@0.2.0 [method]tcp-socket.keep-alive-enabled
//go:noescape //go:noescape
func wasmimport_TCPSocketKeepAliveEnabled(self0 uint32, result *cm.Result[bool, bool, ErrorCode]) func wasmimport_TCPSocketKeepAliveEnabled(self0 uint32, result *cm.Result[ErrorCode, bool, ErrorCode])
//go:wasmimport wasi:sockets/tcp@0.2.0 [method]tcp-socket.keep-alive-idle-time //go:wasmimport wasi:sockets/tcp@0.2.0 [method]tcp-socket.keep-alive-idle-time
//go:noescape //go:noescape
+18 -5
View File
@@ -71,7 +71,7 @@ const (
ShutdownTypeBoth ShutdownTypeBoth
) )
var stringsShutdownType = [3]string{ var _ShutdownTypeStrings = [3]string{
"receive", "receive",
"send", "send",
"both", "both",
@@ -79,9 +79,22 @@ var stringsShutdownType = [3]string{
// String implements [fmt.Stringer], returning the enum case name of e. // String implements [fmt.Stringer], returning the enum case name of e.
func (e ShutdownType) String() string { func (e ShutdownType) String() string {
return stringsShutdownType[e] return _ShutdownTypeStrings[e]
} }
// MarshalText implements [encoding.TextMarshaler].
func (e ShutdownType) MarshalText() ([]byte, error) {
return []byte(e.String()), nil
}
// UnmarshalText implements [encoding.TextUnmarshaler], unmarshaling into an enum
// case. Returns an error if the supplied text is not one of the enum cases.
func (e *ShutdownType) UnmarshalText(text []byte) error {
return _ShutdownTypeUnmarshalCase(e, text)
}
var _ShutdownTypeUnmarshalCase = cm.CaseUnmarshaler[ShutdownType](_ShutdownTypeStrings[:])
// TCPSocket represents the imported resource "wasi:sockets/tcp@0.2.0#tcp-socket". // TCPSocket represents the imported resource "wasi:sockets/tcp@0.2.0#tcp-socket".
// //
// A TCP socket resource. // A TCP socket resource.
@@ -241,7 +254,7 @@ func (self TCPSocket) HopLimit() (result cm.Result[uint8, uint8, ErrorCode]) {
func (self TCPSocket) IsListening() (result bool) { func (self TCPSocket) IsListening() (result bool) {
self0 := cm.Reinterpret[uint32](self) self0 := cm.Reinterpret[uint32](self)
result0 := wasmimport_TCPSocketIsListening((uint32)(self0)) result0 := wasmimport_TCPSocketIsListening((uint32)(self0))
result = cm.U32ToBool((uint32)(result0)) result = (bool)(cm.U32ToBool((uint32)(result0)))
return return
} }
@@ -285,7 +298,7 @@ func (self TCPSocket) KeepAliveCount() (result cm.Result[uint32, uint32, ErrorCo
// keep-alive-enabled: func() -> result<bool, error-code> // keep-alive-enabled: func() -> result<bool, error-code>
// //
//go:nosplit //go:nosplit
func (self TCPSocket) KeepAliveEnabled() (result cm.Result[bool, bool, ErrorCode]) { func (self TCPSocket) KeepAliveEnabled() (result cm.Result[ErrorCode, bool, ErrorCode]) {
self0 := cm.Reinterpret[uint32](self) self0 := cm.Reinterpret[uint32](self)
wasmimport_TCPSocketKeepAliveEnabled((uint32)(self0), &result) wasmimport_TCPSocketKeepAliveEnabled((uint32)(self0), &result)
return return
@@ -457,7 +470,7 @@ func (self TCPSocket) SetKeepAliveCount(value uint32) (result cm.Result[ErrorCod
//go:nosplit //go:nosplit
func (self TCPSocket) SetKeepAliveEnabled(value bool) (result cm.Result[ErrorCode, struct{}, ErrorCode]) { func (self TCPSocket) SetKeepAliveEnabled(value bool) (result cm.Result[ErrorCode, struct{}, ErrorCode]) {
self0 := cm.Reinterpret[uint32](self) self0 := cm.Reinterpret[uint32](self)
value0 := cm.BoolToU32(value) value0 := (uint32)(cm.BoolToU32(value))
wasmimport_TCPSocketSetKeepAliveEnabled((uint32)(self0), (uint32)(value0), &result) wasmimport_TCPSocketSetKeepAliveEnabled((uint32)(self0), (uint32)(value0), &result)
return return
} }
View File
+3 -3
View File
@@ -11,7 +11,7 @@ import (
// IPSocketAddressShape is used for storage in variant or result types. // IPSocketAddressShape is used for storage in variant or result types.
type IPSocketAddressShape struct { type IPSocketAddressShape struct {
_ cm.HostLayout _ cm.HostLayout
shape [unsafe.Sizeof(network.IPSocketAddress{})]byte shape [unsafe.Sizeof(IPSocketAddress{})]byte
} }
func lower_IPv4Address(v network.IPv4Address) (f0 uint32, f1 uint32, f2 uint32, f3 uint32) { func lower_IPv4Address(v network.IPv4Address) (f0 uint32, f1 uint32, f2 uint32, f3 uint32) {
@@ -52,14 +52,14 @@ func lower_IPSocketAddress(v network.IPSocketAddress) (f0 uint32, f1 uint32, f2
f0 = (uint32)(v.Tag()) f0 = (uint32)(v.Tag())
switch f0 { switch f0 {
case 0: // ipv4 case 0: // ipv4
v1, v2, v3, v4, v5 := lower_IPv4SocketAddress(*v.IPv4()) v1, v2, v3, v4, v5 := lower_IPv4SocketAddress(*cm.Case[network.IPv4SocketAddress](&v, 0))
f1 = (uint32)(v1) f1 = (uint32)(v1)
f2 = (uint32)(v2) f2 = (uint32)(v2)
f3 = (uint32)(v3) f3 = (uint32)(v3)
f4 = (uint32)(v4) f4 = (uint32)(v4)
f5 = (uint32)(v5) f5 = (uint32)(v5)
case 1: // ipv6 case 1: // ipv6
v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11 := lower_IPv6SocketAddress(*v.IPv6()) v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11 := lower_IPv6SocketAddress(*cm.Case[network.IPv6SocketAddress](&v, 1))
f1 = (uint32)(v1) f1 = (uint32)(v1)
f2 = (uint32)(v2) f2 = (uint32)(v2)
f3 = (uint32)(v3) f3 = (uint32)(v3)
View File
View File
+8 -8
View File
@@ -43,11 +43,11 @@ type IPAddressFamily = network.IPAddressFamily
// remote-address: ip-socket-address, // remote-address: ip-socket-address,
// } // }
type IncomingDatagram struct { type IncomingDatagram struct {
_ cm.HostLayout _ cm.HostLayout `json:"-"`
// The payload. // The payload.
// //
// Theoretical max size: ~64 KiB. In practice, typically less than 1500 bytes. // Theoretical max size: ~64 KiB. In practice, typically less than 1500 bytes.
Data cm.List[uint8] Data cm.List[uint8] `json:"data"`
// The source address. // The source address.
// //
@@ -55,7 +55,7 @@ type IncomingDatagram struct {
// with, if any. // with, if any.
// //
// Equivalent to the `src_addr` out parameter of `recvfrom`. // Equivalent to the `src_addr` out parameter of `recvfrom`.
RemoteAddress IPSocketAddress RemoteAddress IPSocketAddress `json:"remote-address"`
} }
// OutgoingDatagram represents the record "wasi:sockets/udp@0.2.0#outgoing-datagram". // OutgoingDatagram represents the record "wasi:sockets/udp@0.2.0#outgoing-datagram".
@@ -67,9 +67,9 @@ type IncomingDatagram struct {
// remote-address: option<ip-socket-address>, // remote-address: option<ip-socket-address>,
// } // }
type OutgoingDatagram struct { type OutgoingDatagram struct {
_ cm.HostLayout _ cm.HostLayout `json:"-"`
// The payload. // The payload.
Data cm.List[uint8] Data cm.List[uint8] `json:"data"`
// The destination address. // The destination address.
// //
@@ -80,7 +80,7 @@ type OutgoingDatagram struct {
// //
// If this value is None, the send operation is equivalent to `send` in POSIX. Otherwise // If this value is None, the send operation is equivalent to `send` in POSIX. Otherwise
// it is equivalent to `sendto`. // it is equivalent to `sendto`.
RemoteAddress cm.Option[IPSocketAddress] RemoteAddress cm.Option[IPSocketAddress] `json:"remote-address"`
} }
// UDPSocket represents the imported resource "wasi:sockets/udp@0.2.0#udp-socket". // UDPSocket represents the imported resource "wasi:sockets/udp@0.2.0#udp-socket".
@@ -321,10 +321,10 @@ func (self UDPSocket) StartBind(network_ Network, localAddress IPSocketAddress)
// The POSIX equivalent in pseudo-code is: // The POSIX equivalent in pseudo-code is:
// //
// if (was previously connected) { // if (was previously connected) {
// connect(s, AF_UNSPEC) // connect(s, AF_UNSPEC)
// } // }
// if (remote_address is Some) { // if (remote_address is Some) {
// connect(s, remote_address) // connect(s, remote_address)
// } // }
// //
// Unlike in POSIX, the socket must already be explicitly bound. // Unlike in POSIX, the socket must already be explicitly bound.