mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-27 23:26:44 +00:00
* port changes from #1013 * port changes from #1068 * go.mod tidy * fix compile error * fix goimports * fix log * address review comments * upgrade golang.org/x/net to 0.23.0 * bump version * remove unused flag * update da-codec commit --------- Co-authored-by: Péter Garamvölgyi <peter@scroll.io>
62 lines
858 B
Go
62 lines
858 B
Go
package serrors
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
const (
|
|
temporary Type = iota
|
|
eof
|
|
)
|
|
|
|
var (
|
|
TemporaryError = NewTemporaryError(nil)
|
|
EOFError = NewEOFError(nil)
|
|
)
|
|
|
|
type Type uint8
|
|
|
|
func (t Type) String() string {
|
|
switch t {
|
|
case temporary:
|
|
return "temporary"
|
|
case eof:
|
|
return "EOF"
|
|
default:
|
|
return "unknown"
|
|
}
|
|
}
|
|
|
|
type syncError struct {
|
|
t Type
|
|
err error
|
|
}
|
|
|
|
func NewTemporaryError(err error) error {
|
|
return &syncError{t: temporary, err: err}
|
|
}
|
|
|
|
func NewEOFError(err error) error {
|
|
return &syncError{t: eof, err: err}
|
|
}
|
|
|
|
func (s *syncError) Error() string {
|
|
return fmt.Sprintf("%s: %v", s.t, s.err)
|
|
}
|
|
|
|
func (s *syncError) Unwrap() error {
|
|
return s.err
|
|
}
|
|
|
|
func (s *syncError) Is(target error) bool {
|
|
if target == nil {
|
|
return s == nil
|
|
}
|
|
|
|
targetSyncErr, ok := target.(*syncError)
|
|
if !ok {
|
|
return false
|
|
}
|
|
|
|
return s.t == targetSyncErr.t
|
|
}
|