@cryptotaxi247 / kubo / commits / 1f2e174e6

filestore: use the same codes in ListRes and CorruptReferenceError.

License: MIT Signed-off-by: Kevin Atkinson <k@kevina.org>

Kevin Atkinson committed Feb 6, 2017 at 15:54 UTC 1f2e174e6a989e57b6fe5f58c5487048f95249e3
2 files changed +8 -26
filestore/fsrefstore.go
+7 -16
@@ -27,17 +27,8 @@ type FileManager struct {
27 root string
28 }
29
30 -type CorruptReferenceCode int
31 -
32 -const (
33 - OtherErr CorruptReferenceCode = 0
34 - FileError CorruptReferenceCode = 1
35 - FileMissing CorruptReferenceCode = 2
36 - FileChanged CorruptReferenceCode = 3
37 -)
38 -
30 type CorruptReferenceError struct {
40 - Code CorruptReferenceCode
31 + Code Status
32 Err error
33 }
34
@@ -138,23 +129,23 @@ func (f *FileManager) readDataObj(c *cid.Cid, d *pb.DataObj) ([]byte, error) {
129
130 fi, err := os.Open(abspath)
131 if os.IsNotExist(err) {
141 - return nil, &CorruptReferenceError{FileMissing, err}
132 + return nil, &CorruptReferenceError{StatusFileNotFound, err}
133 } else if err != nil {
143 - return nil, &CorruptReferenceError{FileError, err}
134 + return nil, &CorruptReferenceError{StatusFileError, err}
135 }
136 defer fi.Close()
137
138 _, err = fi.Seek(int64(d.GetOffset()), os.SEEK_SET)
139 if err != nil {
149 - return nil, &CorruptReferenceError{FileError, err}
140 + return nil, &CorruptReferenceError{StatusFileError, err}
141 }
142
143 outbuf := make([]byte, d.GetSize_())
144 _, err = io.ReadFull(fi, outbuf)
145 if err == io.EOF || err == io.ErrUnexpectedEOF {
155 - return nil, &CorruptReferenceError{FileChanged, err}
146 + return nil, &CorruptReferenceError{StatusFileChanged, err}
147 } else if err != nil {
157 - return nil, &CorruptReferenceError{FileError, err}
148 + return nil, &CorruptReferenceError{StatusFileError, err}
149 }
150
151 outcid, err := c.Prefix().Sum(outbuf)
@@ -163,7 +154,7 @@ func (f *FileManager) readDataObj(c *cid.Cid, d *pb.DataObj) ([]byte, error) {
154 }
155
156 if !c.Equals(outcid) {
166 - return nil, &CorruptReferenceError{FileChanged,
157 + return nil, &CorruptReferenceError{StatusFileChanged,
158 fmt.Errorf("data in file did not match. %s offset %d", d.GetFilePath(), d.GetOffset())}
159 }
160
filestore/util.go
+1 -10
@@ -144,16 +144,7 @@ func mkListRes(c *cid.Cid, d *pb.DataObj, err error) *ListRes {
144 if err == ds.ErrNotFound || err == blockstore.ErrNotFound {
145 status = StatusKeyNotFound
146 } else if err, ok := err.(*CorruptReferenceError); ok {
147 - switch err.Code {
148 - case FileError:
149 - status = StatusFileError
150 - case FileMissing:
151 - status = StatusFileNotFound
152 - case FileChanged:
153 - status = StatusFileChanged
154 - default:
155 - status = StatusOtherError
156 - }
147 + status = err.Code
148 } else {
149 status = StatusOtherError
150 }