//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 }