// Code generated by ndpgen. DO NOT EDIT. package host import ( "context" "encoding/json" extism "github.com/extism/go-sdk" ) // TaskQueueCreateQueueRequest is the request type for TaskQueue.CreateQueue. type TaskQueueCreateQueueRequest struct { Name string `json:"name"` Config QueueConfig `json:"config"` } // TaskQueueCreateQueueResponse is the response type for TaskQueue.CreateQueue. type TaskQueueCreateQueueResponse struct { Error string `json:"error,omitempty"` } // TaskQueueEnqueueRequest is the request type for TaskQueue.Enqueue. type TaskQueueEnqueueRequest struct { QueueName string `json:"queueName"` Payload []byte `json:"payload"` } // TaskQueueEnqueueResponse is the response type for TaskQueue.Enqueue. type TaskQueueEnqueueResponse struct { Result string `json:"result,omitempty"` Error string `json:"error,omitempty"` } // TaskQueueGetTaskStatusRequest is the request type for TaskQueue.GetTaskStatus. type TaskQueueGetTaskStatusRequest struct { TaskID string `json:"taskId"` } // TaskQueueGetTaskStatusResponse is the response type for TaskQueue.GetTaskStatus. type TaskQueueGetTaskStatusResponse struct { Result string `json:"result,omitempty"` Error string `json:"error,omitempty"` } // TaskQueueCancelTaskRequest is the request type for TaskQueue.CancelTask. type TaskQueueCancelTaskRequest struct { TaskID string `json:"taskId"` } // TaskQueueCancelTaskResponse is the response type for TaskQueue.CancelTask. type TaskQueueCancelTaskResponse struct { Error string `json:"error,omitempty"` } // RegisterTaskQueueHostFunctions registers TaskQueue service host functions. // The returned host functions should be added to the plugin's configuration. func RegisterTaskQueueHostFunctions(service TaskQueueService) []extism.HostFunction { return []extism.HostFunction{ newTaskQueueCreateQueueHostFunction(service), newTaskQueueEnqueueHostFunction(service), newTaskQueueGetTaskStatusHostFunction(service), newTaskQueueCancelTaskHostFunction(service), } } func newTaskQueueCreateQueueHostFunction(service TaskQueueService) extism.HostFunction { return extism.NewHostFunctionWithStack( "taskqueue_createqueue", func(ctx context.Context, p *extism.CurrentPlugin, stack []uint64) { // Read JSON request from plugin memory reqBytes, err := p.ReadBytes(stack[0]) if err != nil { taskqueueWriteError(p, stack, err) return } var req TaskQueueCreateQueueRequest if err := json.Unmarshal(reqBytes, &req); err != nil { taskqueueWriteError(p, stack, err) return } // Call the service method if svcErr := service.CreateQueue(ctx, req.Name, req.Config); svcErr != nil { taskqueueWriteError(p, stack, svcErr) return } // Write JSON response to plugin memory resp := TaskQueueCreateQueueResponse{} taskqueueWriteResponse(p, stack, resp) }, []extism.ValueType{extism.ValueTypePTR}, []extism.ValueType{extism.ValueTypePTR}, ) } func newTaskQueueEnqueueHostFunction(service TaskQueueService) extism.HostFunction { return extism.NewHostFunctionWithStack( "taskqueue_enqueue", func(ctx context.Context, p *extism.CurrentPlugin, stack []uint64) { // Read JSON request from plugin memory reqBytes, err := p.ReadBytes(stack[0]) if err != nil { taskqueueWriteError(p, stack, err) return } var req TaskQueueEnqueueRequest if err := json.Unmarshal(reqBytes, &req); err != nil { taskqueueWriteError(p, stack, err) return } // Call the service method result, svcErr := service.Enqueue(ctx, req.QueueName, req.Payload) if svcErr != nil { taskqueueWriteError(p, stack, svcErr) return } // Write JSON response to plugin memory resp := TaskQueueEnqueueResponse{ Result: result, } taskqueueWriteResponse(p, stack, resp) }, []extism.ValueType{extism.ValueTypePTR}, []extism.ValueType{extism.ValueTypePTR}, ) } func newTaskQueueGetTaskStatusHostFunction(service TaskQueueService) extism.HostFunction { return extism.NewHostFunctionWithStack( "taskqueue_gettaskstatus", func(ctx context.Context, p *extism.CurrentPlugin, stack []uint64) { // Read JSON request from plugin memory reqBytes, err := p.ReadBytes(stack[0]) if err != nil { taskqueueWriteError(p, stack, err) return } var req TaskQueueGetTaskStatusRequest if err := json.Unmarshal(reqBytes, &req); err != nil { taskqueueWriteError(p, stack, err) return } // Call the service method result, svcErr := service.GetTaskStatus(ctx, req.TaskID) if svcErr != nil { taskqueueWriteError(p, stack, svcErr) return } // Write JSON response to plugin memory resp := TaskQueueGetTaskStatusResponse{ Result: result, } taskqueueWriteResponse(p, stack, resp) }, []extism.ValueType{extism.ValueTypePTR}, []extism.ValueType{extism.ValueTypePTR}, ) } func newTaskQueueCancelTaskHostFunction(service TaskQueueService) extism.HostFunction { return extism.NewHostFunctionWithStack( "taskqueue_canceltask", func(ctx context.Context, p *extism.CurrentPlugin, stack []uint64) { // Read JSON request from plugin memory reqBytes, err := p.ReadBytes(stack[0]) if err != nil { taskqueueWriteError(p, stack, err) return } var req TaskQueueCancelTaskRequest if err := json.Unmarshal(reqBytes, &req); err != nil { taskqueueWriteError(p, stack, err) return } // Call the service method if svcErr := service.CancelTask(ctx, req.TaskID); svcErr != nil { taskqueueWriteError(p, stack, svcErr) return } // Write JSON response to plugin memory resp := TaskQueueCancelTaskResponse{} taskqueueWriteResponse(p, stack, resp) }, []extism.ValueType{extism.ValueTypePTR}, []extism.ValueType{extism.ValueTypePTR}, ) } // taskqueueWriteResponse writes a JSON response to plugin memory. func taskqueueWriteResponse(p *extism.CurrentPlugin, stack []uint64, resp any) { respBytes, err := json.Marshal(resp) if err != nil { taskqueueWriteError(p, stack, err) return } respPtr, err := p.WriteBytes(respBytes) if err != nil { stack[0] = 0 return } stack[0] = respPtr } // taskqueueWriteError writes an error response to plugin memory. func taskqueueWriteError(p *extism.CurrentPlugin, stack []uint64, err error) { errResp := struct { Error string `json:"error"` }{Error: err.Error()} respBytes, _ := json.Marshal(errResp) respPtr, _ := p.WriteBytes(respBytes) stack[0] = respPtr }