29 lines
1.1 KiB
Go
29 lines
1.1 KiB
Go
package executor
|
|
|
|
import (
|
|
"errors"
|
|
"net/http"
|
|
)
|
|
|
|
// UpstreamWebsocketReplayRequiredError indicates that an incremental request
|
|
// cannot safely continue because its upstream websocket is no longer reusable.
|
|
type UpstreamWebsocketReplayRequiredError struct{}
|
|
|
|
func (*UpstreamWebsocketReplayRequiredError) Error() string {
|
|
return `{"error":{"message":"upstream transport requires full HTTP replay","type":"server_error","code":"upstream_http_replay_required","status":426}}`
|
|
}
|
|
|
|
func (*UpstreamWebsocketReplayRequiredError) StatusCode() int { return http.StatusUpgradeRequired }
|
|
|
|
func (*UpstreamWebsocketReplayRequiredError) IsRequestScoped() bool { return true }
|
|
|
|
// NewUpstreamWebsocketReplayRequiredError creates a request-scoped replay signal.
|
|
func NewUpstreamWebsocketReplayRequiredError() error {
|
|
return &UpstreamWebsocketReplayRequiredError{}
|
|
}
|
|
|
|
// IsUpstreamWebsocketReplayRequired reports whether err is the internal replay signal.
|
|
func IsUpstreamWebsocketReplayRequired(err error) bool {
|
|
var replayErr *UpstreamWebsocketReplayRequiredError
|
|
return errors.As(err, &replayErr)
|
|
}
|