...
1
2
3
4
5
6
7
8 package errors
9
10 import (
11 "errors"
12 "fmt"
13
14 "github.com/syndtr/goleveldb/leveldb/storage"
15 "github.com/syndtr/goleveldb/leveldb/util"
16 )
17
18
19 var (
20 ErrNotFound = New("leveldb: not found")
21 ErrReleased = util.ErrReleased
22 ErrHasReleaser = util.ErrHasReleaser
23 )
24
25
26 func New(text string) error {
27 return errors.New(text)
28 }
29
30
31
32 type ErrCorrupted struct {
33 Fd storage.FileDesc
34 Err error
35 }
36
37 func (e *ErrCorrupted) Error() string {
38 if !e.Fd.Zero() {
39 return fmt.Sprintf("%v [file=%v]", e.Err, e.Fd)
40 }
41 return e.Err.Error()
42 }
43
44
45 func NewErrCorrupted(fd storage.FileDesc, err error) error {
46 return &ErrCorrupted{fd, err}
47 }
48
49
50
51 func IsCorrupted(err error) bool {
52 switch err.(type) {
53 case *ErrCorrupted:
54 return true
55 case *storage.ErrCorrupted:
56 return true
57 }
58 return false
59 }
60
61
62
63 type ErrMissingFiles struct {
64 Fds []storage.FileDesc
65 }
66
67 func (e *ErrMissingFiles) Error() string { return "file missing" }
68
69
70
71 func SetFd(err error, fd storage.FileDesc) error {
72 switch x := err.(type) {
73 case *ErrCorrupted:
74 x.Fd = fd
75 return x
76 default:
77 return err
78 }
79 }
80
View as plain text