summaryrefslogtreecommitdiff
path: root/vendor/github.com/tetratelabs/wazero/internal/wasip1/sock.go
blob: 90d33ece8f6ae27f44dd1d86a6af878adbdd515b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package wasip1

import "strconv"

const (
	SockAcceptName   = "sock_accept"
	SockRecvName     = "sock_recv"
	SockSendName     = "sock_send"
	SockShutdownName = "sock_shutdown"
)

// SD Flags indicate which channels on a socket to shut down.
// https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-sdflags-flagsu8
const (
	// SD_RD disables further receive operations.
	SD_RD uint8 = 1 << iota //nolint
	// SD_WR disables further send operations.
	SD_WR
)

func SdFlagsString(sdflags int) string {
	return flagsString(sdflagNames[:], sdflags)
}

var sdflagNames = [...]string{
	"RD",
	"WR",
}

// SI Flags are flags provided to sock_send. As there are currently no flags defined, it must be set to zero.
// https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-siflags-u16

func SiFlagsString(siflags int) string {
	if siflags == 0 {
		return ""
	}
	return strconv.Itoa(siflags)
}

// RI Flags are flags provided to sock_recv.
// https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-riflags-flagsu16
const (
	// RI_RECV_PEEK returns the message without removing it from the socket's receive queue
	RI_RECV_PEEK uint8 = 1 << iota //nolint
	// RI_RECV_WAITALL on byte-stream sockets, block until the full amount of data can be returned.
	RI_RECV_WAITALL
)

func RiFlagsString(riflags int) string {
	return flagsString(riflagNames[:], riflags)
}

var riflagNames = [...]string{
	"RECV_PEEK",
	"RECV_WAITALL",
}

// RO Flags are flags returned by sock_recv.
// https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-roflags-flagsu16
const (
	// RO_RECV_DATA_TRUNCATED is returned by sock_recv when message data has been truncated.
	RO_RECV_DATA_TRUNCATED uint8 = 1 << iota //nolint
)

func RoFlagsString(roflags int) string {
	return flagsString(roflagNames[:], roflags)
}

var roflagNames = [...]string{
	"RECV_DATA_TRUNCATED",
}