Commit 4d2aefad authored by laser's avatar laser
Browse files

feat(enum): extract sector sealing state to enum

parent f39d270e
......@@ -7,6 +7,7 @@ import (
"unsafe"
"github.com/filecoin-project/go-sectorbuilder/sealed_sector_health"
"github.com/filecoin-project/go-sectorbuilder/sealing_state"
logging "github.com/ipfs/go-log"
"github.com/pkg/errors"
......@@ -79,14 +80,14 @@ type SealedSectorMetadata struct {
// SectorSealingStatus communicates how far along in the sealing process a
// sector has progressed.
type SectorSealingStatus struct {
SectorID uint64
SealStatusCode uint8 // Sealed = 0, Pending = 1, Failed = 2, Sealing = 3
SealErrorMsg string // will be nil unless SealStatusCode == 2
CommD [CommitmentBytesLen]byte // will be empty unless SealStatusCode == 0
CommR [CommitmentBytesLen]byte // will be empty unless SealStatusCode == 0
CommRStar [CommitmentBytesLen]byte // will be empty unless SealStatusCode == 0
Proof []byte // will be empty unless SealStatusCode == 0
Pieces []PieceMetadata // will be empty unless SealStatusCode == 0
SectorID uint64
State sealing_state.State
SealErrorMsg string // will be nil unless State == Failed
CommD [CommitmentBytesLen]byte // will be empty unless State == Sealed
CommR [CommitmentBytesLen]byte // will be empty unless State == Sealed
CommRStar [CommitmentBytesLen]byte // will be empty unless State == Sealed
Proof []byte // will be empty unless State == Sealed
Pieces []PieceMetadata // will be empty unless State == Sealed
}
// PieceMetadata represents a piece stored by the sector builder.
......@@ -408,11 +409,11 @@ func GetSectorSealingStatusByID(sectorBuilderPtr unsafe.Pointer, sectorID uint64
}
if resPtr.seal_status_code == C.Failed {
return SectorSealingStatus{SectorID: sectorID, SealStatusCode: 2, SealErrorMsg: C.GoString(resPtr.seal_error_msg)}, nil
return SectorSealingStatus{SectorID: sectorID, State: sealing_state.Failed, SealErrorMsg: C.GoString(resPtr.seal_error_msg)}, nil
} else if resPtr.seal_status_code == C.Pending {
return SectorSealingStatus{SectorID: sectorID, SealStatusCode: 1}, nil
return SectorSealingStatus{SectorID: sectorID, State: sealing_state.Pending}, nil
} else if resPtr.seal_status_code == C.Sealing {
return SectorSealingStatus{SectorID: sectorID, SealStatusCode: 3}, nil
return SectorSealingStatus{SectorID: sectorID, State: sealing_state.Sealing}, nil
} else if resPtr.seal_status_code == C.Sealed {
commRSlice := goBytes(&resPtr.comm_r[0], CommitmentBytesLen)
var commR [CommitmentBytesLen]byte
......@@ -434,13 +435,13 @@ func GetSectorSealingStatusByID(sectorBuilderPtr unsafe.Pointer, sectorID uint64
}
return SectorSealingStatus{
SectorID: sectorID,
SealStatusCode: 0,
CommD: commD,
CommR: commR,
CommRStar: commRStar,
Proof: proof,
Pieces: ps,
SectorID: sectorID,
State: sealing_state.Sealed,
CommD: commD,
CommR: commR,
CommRStar: commRStar,
Proof: proof,
Pieces: ps,
}, nil
} else {
// unknown
......
......@@ -13,6 +13,7 @@ import (
sb "github.com/filecoin-project/go-sectorbuilder"
"github.com/filecoin-project/go-sectorbuilder/sealed_sector_health"
"github.com/filecoin-project/go-sectorbuilder/sealing_state"
"github.com/stretchr/testify/require"
)
......@@ -64,7 +65,7 @@ func TestSectorBuilderLifecycle(t *testing.T) {
// block until Groth parameter cache is (lazily) hydrated and sector has
// been sealed (or timeout)
status, err := pollForSectorSealingStatus(ptr, sectorID, 0, time.Minute*30)
status, err := pollForSectorSealingStatus(ptr, sectorID, sealing_state.Sealed, time.Minute*30)
require.NoError(t, err)
require.Equal(t, 1, len(status.Pieces), "expected to see the one piece we added")
......@@ -111,7 +112,7 @@ func TestSectorBuilderLifecycle(t *testing.T) {
require.Equal(t, pieceBytes, unsealedPieceBytes)
}
func pollForSectorSealingStatus(ptr unsafe.Pointer, sectorID uint64, sealStatusCode uint8, timeout time.Duration) (status sb.SectorSealingStatus, retErr error) {
func pollForSectorSealingStatus(ptr unsafe.Pointer, sectorID uint64, targetState sealing_state.State, timeout time.Duration) (status sb.SectorSealingStatus, retErr error) {
timeoutCh := time.After(timeout)
tick := time.Tick(5 * time.Second)
......@@ -128,7 +129,7 @@ func pollForSectorSealingStatus(ptr unsafe.Pointer, sectorID uint64, sealStatusC
return
}
if sealingStatus.SealStatusCode == sealStatusCode {
if sealingStatus.State == targetState {
status = sealingStatus
return
}
......
package sealing_state
// State communicates the state of the sector with respect to sealing.
type State int
const (
Unknown State = iota
Pending // sector is still accepting user data
Failed // sealing failed
Sealing // sector is currently being sealed
Sealed // sector has been sealed successfully
)
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment