Skip to content

Commit 55bb87d

Browse files
committed
make snapshotReader have reader attribute
initiate reader and pass it in as argument to newSnapshotReader. also do some cleanup
1 parent 2f4c58b commit 55bb87d

File tree

1 file changed

+24
-29
lines changed

1 file changed

+24
-29
lines changed

cmd/filecoin-chain-archiver/cmds/create.go

Lines changed: 24 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -52,37 +52,27 @@ type snapshotInfo struct {
5252
}
5353

5454
type snapshotReader struct {
55-
data []byte
56-
fileLocation string
57-
errCh chan error
55+
reader io.Reader
56+
errCh chan error
5857
}
5958

60-
func (sr *snapshotReader) Read(p []byte) (n int, err error) {
61-
r, err := os.OpenFile(sr.fileLocation, os.O_RDONLY, 444)
62-
if err != nil {
63-
return n, err
64-
}
65-
defer r.Close()
66-
for {
67-
n, err := r.Read(p)
68-
if err != nil && err != io.EOF {
59+
func (sr *snapshotReader) Read(p []byte) (n int, err error) {
60+
n, _ = sr.reader.Read(p)
61+
select {
62+
case err := <-sr.errCh:
63+
if err != nil {
6964
return n, err
7065
}
71-
select {
72-
case err := <- sr.errCh:
73-
if err != nil {
74-
return n, err
75-
}
76-
return n, io.EOF
77-
default:
78-
}
66+
return n, io.EOF
67+
default:
7968
}
69+
return n, nil
8070
}
8171

82-
func newSnapshotReader(f string, errChan chan error) *snapshotReader {
72+
func newSnapshotReader(reader io.Reader, errChan chan error) *snapshotReader {
8373
return &snapshotReader{
84-
fileLocation: f,
85-
errCh: errChan,
74+
reader: reader,
75+
errCh: errChan,
8676
}
8777
}
8878

@@ -394,7 +384,12 @@ var cmdCreate = &cli.Command{
394384
break
395385
}
396386

397-
rr := newSnapshotReader(rrPath, errCh)
387+
f, err := os.OpenFile(rrPath, os.O_RDONLY, 444)
388+
if err != nil {
389+
return err
390+
}
391+
defer f.Close()
392+
rr := newSnapshotReader(f, errCh)
398393

399394
go func() {
400395
var lastSize int64
@@ -407,11 +402,11 @@ var cmdCreate = &cli.Command{
407402
}
408403
logger.Infow("update", "total", size, "speed", (size-lastSize)/int64(flagProgressUpdate/time.Second))
409404
lastSize = size
410-
case err := <- errCh:
411-
if err != nil {
412-
break
413-
}
414-
}
405+
case err := <-errCh:
406+
if err != nil {
407+
break
408+
}
409+
}
415410
}
416411
}()
417412

0 commit comments

Comments
 (0)