Skip to content

Commit

Permalink
Create bufDagReader
Browse files Browse the repository at this point in the history
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
  • Loading branch information
Kubuxu committed Nov 21, 2016
1 parent 09854c0 commit 1817d10
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 3 deletions.
41 changes: 41 additions & 0 deletions unixfs/io/bufdagreader.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package io

import (
"bytes"
"context"
"io"
)

type bufDagReader struct {
*bytes.Reader
}

func NewBufDagReader(b []byte) *bufDagReader {
return &bufDagReader{bytes.NewReader(b)}
}

var _ DagReader = (*bufDagReader)(nil)

func (*bufDagReader) Close() error {
return nil
}

func (rd *bufDagReader) CtxReadFull(ctx context.Context, b []byte) (int, error) {
return rd.Read(b)
}

func (rd *bufDagReader) Offset() int64 {
of, err := rd.Seek(0, io.SeekCurrent)
if err != nil {
panic("this should never happen " + err.Error())
}
return of
}

func (rd *bufDagReader) Size() uint64 {
s := rd.Reader.Size()
if s < 0 {
panic("size smaller than 0 (impossible!!)")
}
return uint64(s)
}
4 changes: 1 addition & 3 deletions unixfs/io/dagreader.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,7 @@ type ReadSeekCloser interface {
func NewDagReader(ctx context.Context, n node.Node, serv mdag.DAGService) (DagReader, error) {
switch n := n.(type) {
case *mdag.RawNode:
return &pbDagReader{
buf: NewRSNCFromBytes(n.RawData()),
}, nil
return NewBufDagReader(n.RawData()), nil
case *mdag.ProtoNode:
pb := new(ftpb.Data)
if err := proto.Unmarshal(n.Data(), pb); err != nil {
Expand Down
2 changes: 2 additions & 0 deletions unixfs/io/pbdagreader.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ type pbDagReader struct {
cancel func()
}

var _ DagReader = (*pbDagReader)(nil)

func NewPBFileReader(ctx context.Context, n *mdag.ProtoNode, pb *ftpb.Data, serv mdag.DAGService) *pbDagReader {
fctx, cancel := context.WithCancel(ctx)
promises := mdag.GetDAG(fctx, serv, n)
Expand Down

0 comments on commit 1817d10

Please sign in to comment.