Skip to content

Commit 8dcb2b9

Browse files
Consume go-state-types (#394)
* Consume go-state-types * go mod tidy * Fix imports * style(imports): fix import spacing Co-authored-by: ZenGround0 <ZenGround0@users.noreply.github.com> Co-authored-by: hannahhoward <hannah@hannahhoward.net>
1 parent 584a14d commit 8dcb2b9

File tree

4 files changed

+71
-12
lines changed

4 files changed

+71
-12
lines changed

pieceio/mocks/PieceIO.go

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pieceio/pieceio.go

Lines changed: 63 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,13 @@ import (
1010
blockstore "github.com/ipfs/go-ipfs-blockstore"
1111
"github.com/ipld/go-car"
1212
"github.com/ipld/go-ipld-prime"
13+
"github.com/prometheus/common/log"
14+
"golang.org/x/xerrors"
1315

16+
ffi "github.com/filecoin-project/filecoin-ffi"
1417
"github.com/filecoin-project/go-multistore"
1518
"github.com/filecoin-project/go-padreader"
16-
"github.com/filecoin-project/sector-storage/ffiwrapper"
17-
"github.com/filecoin-project/specs-actors/actors/abi"
19+
"github.com/filecoin-project/go-state-types/abi"
1820

1921
"github.com/filecoin-project/go-fil-markets/filestore"
2022
)
@@ -134,7 +136,7 @@ func (pio *pieceIOWithStore) GeneratePieceCommitmentToFile(rt abi.RegisteredSeal
134136

135137
func GeneratePieceCommitment(rt abi.RegisteredSealProof, rd io.Reader, pieceSize uint64) (cid.Cid, abi.UnpaddedPieceSize, error) {
136138
paddedReader, paddedSize := padreader.New(rd, pieceSize)
137-
commitment, err := ffiwrapper.GeneratePieceCIDFromFile(rt, paddedReader, paddedSize)
139+
commitment, err := GeneratePieceCIDFromFile(rt, paddedReader, paddedSize)
138140
if err != nil {
139141
return cid.Undef, 0, err
140142
}
@@ -159,3 +161,61 @@ func (pio *pieceIO) bstore(storeID *multistore.StoreID) (blockstore.Blockstore,
159161
}
160162
return store.Bstore, nil
161163
}
164+
165+
func ToReadableFile(r io.Reader, n int64) (*os.File, func() error, error) {
166+
f, ok := r.(*os.File)
167+
if ok {
168+
return f, func() error { return nil }, nil
169+
}
170+
171+
var w *os.File
172+
173+
f, w, err := os.Pipe()
174+
if err != nil {
175+
return nil, nil, err
176+
}
177+
178+
var wait sync.Mutex
179+
var werr error
180+
181+
wait.Lock()
182+
go func() {
183+
defer wait.Unlock()
184+
185+
var copied int64
186+
copied, werr = io.CopyN(w, r, n)
187+
if werr != nil {
188+
log.Warnf("toReadableFile: copy error: %+v", werr)
189+
}
190+
191+
err := w.Close()
192+
if werr == nil && err != nil {
193+
werr = err
194+
log.Warnf("toReadableFile: close error: %+v", err)
195+
return
196+
}
197+
if copied != n {
198+
log.Warnf("copied different amount than expected: %d != %d", copied, n)
199+
werr = xerrors.Errorf("copied different amount than expected: %d != %d", copied, n)
200+
}
201+
}()
202+
203+
return f, func() error {
204+
wait.Lock()
205+
return werr
206+
}, nil
207+
}
208+
209+
func GeneratePieceCIDFromFile(proofType abi.RegisteredSealProof, piece io.Reader, pieceSize abi.UnpaddedPieceSize) (cid.Cid, error) {
210+
f, werr, err := ToReadableFile(piece, int64(pieceSize))
211+
if err != nil {
212+
return cid.Undef, err
213+
}
214+
215+
pieceCID, err := ffi.GeneratePieceCIDFromFile(proofType, f, pieceSize)
216+
if err != nil {
217+
return cid.Undef, err
218+
}
219+
220+
return pieceCID, werr()
221+
}

pieceio/pieceio_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,7 @@ import (
1919
"github.com/stretchr/testify/require"
2020

2121
"github.com/filecoin-project/go-multistore"
22-
"github.com/filecoin-project/sector-storage/ffiwrapper"
23-
"github.com/filecoin-project/specs-actors/actors/abi"
22+
"github.com/filecoin-project/go-state-types/abi"
2423

2524
"github.com/filecoin-project/go-fil-markets/filestore"
2625
fsmocks "github.com/filecoin-project/go-fil-markets/filestore/mocks"
@@ -190,7 +189,7 @@ func Test_StoreRestoreMemoryBuffer(t *testing.T) {
190189
_, err = tmpFile.Read(buf)
191190
require.NoError(t, err)
192191
buffer := bytes.NewBuffer(buf)
193-
secondCommitment, err := ffiwrapper.GeneratePieceCIDFromFile(abi.RegisteredSealProof_StackedDrg2KiBV1, buffer, paddedSize)
192+
secondCommitment, err := pieceio.GeneratePieceCIDFromFile(abi.RegisteredSealProof_StackedDrg2KiBV1, buffer, paddedSize)
194193
require.NoError(t, err)
195194
require.Equal(t, commitment, secondCommitment)
196195
}

pieceio/types.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99
"github.com/ipld/go-ipld-prime"
1010

1111
"github.com/filecoin-project/go-multistore"
12-
"github.com/filecoin-project/specs-actors/actors/abi"
12+
"github.com/filecoin-project/go-state-types/abi"
1313

1414
"github.com/filecoin-project/go-fil-markets/filestore"
1515
)

0 commit comments

Comments
 (0)