go-ethereum/rollup/da_syncer/serrors/errors.go
Jonas Theis ac8164f5a4
feat: follower node sync from DA (#1098)
* 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>
2024-12-18 17:27:51 +01:00

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
}