Some checks failed
Pipeline: Test, Lint, Build / Get version info (push) Has been cancelled
Pipeline: Test, Lint, Build / Lint Go code (push) Has been cancelled
Pipeline: Test, Lint, Build / Test Go code (push) Has been cancelled
Pipeline: Test, Lint, Build / Test JS code (push) Has been cancelled
Pipeline: Test, Lint, Build / Lint i18n files (push) Has been cancelled
Pipeline: Test, Lint, Build / Check Docker configuration (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (darwin/amd64) (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (darwin/arm64) (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (linux/386) (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (linux/amd64) (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (linux/arm/v5) (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (linux/arm/v6) (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (linux/arm/v7) (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (linux/arm64) (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (windows/386) (push) Has been cancelled
Pipeline: Test, Lint, Build / Build (windows/amd64) (push) Has been cancelled
Pipeline: Test, Lint, Build / Push to GHCR (push) Has been cancelled
Pipeline: Test, Lint, Build / Push to Docker Hub (push) Has been cancelled
Pipeline: Test, Lint, Build / Cleanup digest artifacts (push) Has been cancelled
Pipeline: Test, Lint, Build / Build Windows installers (push) Has been cancelled
Pipeline: Test, Lint, Build / Package/Release (push) Has been cancelled
Pipeline: Test, Lint, Build / Upload Linux PKG (push) Has been cancelled
Close stale issues and PRs / stale (push) Has been cancelled
POEditor import / update-translations (push) Has been cancelled
171 lines
4.0 KiB
Go
171 lines
4.0 KiB
Go
//go:build !wasip1
|
|
|
|
// Code generated by protoc-gen-go-plugin. DO NOT EDIT.
|
|
// versions:
|
|
// protoc-gen-go-plugin v0.1.0
|
|
// protoc v5.29.3
|
|
// source: host/websocket/websocket.proto
|
|
|
|
package websocket
|
|
|
|
import (
|
|
context "context"
|
|
wasm "github.com/knqyf263/go-plugin/wasm"
|
|
wazero "github.com/tetratelabs/wazero"
|
|
api "github.com/tetratelabs/wazero/api"
|
|
)
|
|
|
|
const (
|
|
i32 = api.ValueTypeI32
|
|
i64 = api.ValueTypeI64
|
|
)
|
|
|
|
type _webSocketService struct {
|
|
WebSocketService
|
|
}
|
|
|
|
// Instantiate a Go-defined module named "env" that exports host functions.
|
|
func Instantiate(ctx context.Context, r wazero.Runtime, hostFunctions WebSocketService) error {
|
|
envBuilder := r.NewHostModuleBuilder("env")
|
|
h := _webSocketService{hostFunctions}
|
|
|
|
envBuilder.NewFunctionBuilder().
|
|
WithGoModuleFunction(api.GoModuleFunc(h._Connect), []api.ValueType{i32, i32}, []api.ValueType{i64}).
|
|
WithParameterNames("offset", "size").
|
|
Export("connect")
|
|
|
|
envBuilder.NewFunctionBuilder().
|
|
WithGoModuleFunction(api.GoModuleFunc(h._SendText), []api.ValueType{i32, i32}, []api.ValueType{i64}).
|
|
WithParameterNames("offset", "size").
|
|
Export("send_text")
|
|
|
|
envBuilder.NewFunctionBuilder().
|
|
WithGoModuleFunction(api.GoModuleFunc(h._SendBinary), []api.ValueType{i32, i32}, []api.ValueType{i64}).
|
|
WithParameterNames("offset", "size").
|
|
Export("send_binary")
|
|
|
|
envBuilder.NewFunctionBuilder().
|
|
WithGoModuleFunction(api.GoModuleFunc(h._Close), []api.ValueType{i32, i32}, []api.ValueType{i64}).
|
|
WithParameterNames("offset", "size").
|
|
Export("close")
|
|
|
|
_, err := envBuilder.Instantiate(ctx)
|
|
return err
|
|
}
|
|
|
|
// Connect to a WebSocket endpoint
|
|
|
|
func (h _webSocketService) _Connect(ctx context.Context, m api.Module, stack []uint64) {
|
|
offset, size := uint32(stack[0]), uint32(stack[1])
|
|
buf, err := wasm.ReadMemory(m.Memory(), offset, size)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
request := new(ConnectRequest)
|
|
err = request.UnmarshalVT(buf)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
resp, err := h.Connect(ctx, request)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
buf, err = resp.MarshalVT()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
ptr, err := wasm.WriteMemory(ctx, m, buf)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
ptrLen := (ptr << uint64(32)) | uint64(len(buf))
|
|
stack[0] = ptrLen
|
|
}
|
|
|
|
// Send a text message
|
|
|
|
func (h _webSocketService) _SendText(ctx context.Context, m api.Module, stack []uint64) {
|
|
offset, size := uint32(stack[0]), uint32(stack[1])
|
|
buf, err := wasm.ReadMemory(m.Memory(), offset, size)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
request := new(SendTextRequest)
|
|
err = request.UnmarshalVT(buf)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
resp, err := h.SendText(ctx, request)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
buf, err = resp.MarshalVT()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
ptr, err := wasm.WriteMemory(ctx, m, buf)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
ptrLen := (ptr << uint64(32)) | uint64(len(buf))
|
|
stack[0] = ptrLen
|
|
}
|
|
|
|
// Send binary data
|
|
|
|
func (h _webSocketService) _SendBinary(ctx context.Context, m api.Module, stack []uint64) {
|
|
offset, size := uint32(stack[0]), uint32(stack[1])
|
|
buf, err := wasm.ReadMemory(m.Memory(), offset, size)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
request := new(SendBinaryRequest)
|
|
err = request.UnmarshalVT(buf)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
resp, err := h.SendBinary(ctx, request)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
buf, err = resp.MarshalVT()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
ptr, err := wasm.WriteMemory(ctx, m, buf)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
ptrLen := (ptr << uint64(32)) | uint64(len(buf))
|
|
stack[0] = ptrLen
|
|
}
|
|
|
|
// Close a connection
|
|
|
|
func (h _webSocketService) _Close(ctx context.Context, m api.Module, stack []uint64) {
|
|
offset, size := uint32(stack[0]), uint32(stack[1])
|
|
buf, err := wasm.ReadMemory(m.Memory(), offset, size)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
request := new(CloseRequest)
|
|
err = request.UnmarshalVT(buf)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
resp, err := h.Close(ctx, request)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
buf, err = resp.MarshalVT()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
ptr, err := wasm.WriteMemory(ctx, m, buf)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
ptrLen := (ptr << uint64(32)) | uint64(len(buf))
|
|
stack[0] = ptrLen
|
|
}
|