unixfs: split `precalcNextBuf`
Create new `loadBufNode` function to handle the `buf` logic which is unrelated to the main `precalcNextBuf` logic of processing promises to fetch nodes. License: MIT Signed-off-by: Lucas Molas <schomatis@gmail.com>
Lucas Molas committed
Jul 16, 2018 at 11:14 UTC
13d911008823399ccbe356f564ae4b40373eb8d5
1 file changed
+8
-4
unixfs/io/pbdagreader.go
+8
-4
@@ -98,16 +98,20 @@ func (dr *PBDagReader) precalcNextBuf(ctx context.Context) error {
98
dr.promises[dr.linkPosition] = nil
99
dr.linkPosition++
100
101
- switch nxt := nxt.(type) {
101
+ return dr.loadBufNode(nxt)
102
+}
103
+
104
+func (dr *PBDagReader) loadBufNode(node ipld.Node) error {
105
+ switch node := node.(type) {
106
case *mdag.ProtoNode:
103
- fsNode, err := ft.FSNodeFromBytes(nxt.Data())
107
+ fsNode, err := ft.FSNodeFromBytes(node.Data())
108
if err != nil {
109
return fmt.Errorf("incorrectly formatted protobuf: %s", err)
110
}
111
112
switch fsNode.Type() {
113
case ftpb.Data_File:
110
- dr.buf = NewPBFileReader(dr.ctx, nxt, fsNode, dr.serv)
114
+ dr.buf = NewPBFileReader(dr.ctx, node, fsNode, dr.serv)
115
return nil
116
case ftpb.Data_Raw:
117
dr.buf = NewBufDagReader(fsNode.Data())
@@ -116,7 +120,7 @@ func (dr *PBDagReader) precalcNextBuf(ctx context.Context) error {
120
return fmt.Errorf("found %s node in unexpected place", fsNode.Type().String())
121
}
122
case *mdag.RawNode:
119
- dr.buf = NewBufDagReader(nxt.RawData())
123
+ dr.buf = NewBufDagReader(node.RawData())
124
return nil
125
default:
126
return ErrUnkownNodeType