internal/langserver/handlers/cancel_request.go (24 lines of code) (raw):
package handlers
import (
"context"
"fmt"
lsp "github.com/Azure/azapi-lsp/internal/protocol"
"github.com/creachadair/jrpc2"
)
func CancelRequest(ctx context.Context, params lsp.CancelParams) error {
id, err := decodeRequestID(params.ID)
if err != nil {
return err
}
jrpc2.ServerFromContext(ctx).CancelRequest(id)
return nil
}
func decodeRequestID(v interface{}) (string, error) {
if val, ok := v.(string); ok {
return val, nil
}
if val, ok := v.(float64); ok {
return fmt.Sprintf("%d", int64(val)), nil
}
return "", fmt.Errorf("unable to decode request ID: %#v", v)
}