2019-11-01 12:01:16 +00:00
|
|
|
package api
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
2019-12-04 13:10:15 +00:00
|
|
|
|
2019-11-01 12:01:16 +00:00
|
|
|
"github.com/filecoin-project/lotus/chain/address"
|
|
|
|
"github.com/filecoin-project/lotus/lib/sectorbuilder"
|
|
|
|
)
|
|
|
|
|
2019-11-01 13:58:48 +00:00
|
|
|
// alias because cbor-gen doesn't like non-alias types
|
|
|
|
type SectorState = uint64
|
2019-11-01 12:01:16 +00:00
|
|
|
|
|
|
|
const (
|
2019-11-01 13:58:48 +00:00
|
|
|
UndefinedSectorState SectorState = iota
|
2019-11-01 12:01:16 +00:00
|
|
|
|
|
|
|
Empty // TODO: Is this useful
|
|
|
|
Packing // sector not in sealStore, and not on chain
|
|
|
|
|
|
|
|
Unsealed // sealing / queued
|
|
|
|
PreCommitting // on chain pre-commit
|
|
|
|
PreCommitted // waiting for seed
|
|
|
|
Committing
|
2019-11-01 13:58:48 +00:00
|
|
|
Proving
|
|
|
|
|
2019-12-03 23:59:40 +00:00
|
|
|
SealFailed
|
|
|
|
PreCommitFailed
|
|
|
|
SealCommitFailed
|
|
|
|
CommitFailed
|
|
|
|
|
2019-12-03 23:42:22 +00:00
|
|
|
FailedUnrecoverable
|
2019-11-01 12:01:16 +00:00
|
|
|
)
|
|
|
|
|
2019-12-03 23:42:22 +00:00
|
|
|
var SectorStates = []string{
|
|
|
|
UndefinedSectorState: "UndefinedSectorState",
|
2019-12-03 23:59:40 +00:00
|
|
|
Empty: "Empty",
|
|
|
|
Packing: "Packing",
|
|
|
|
Unsealed: "Unsealed",
|
|
|
|
PreCommitting: "PreCommitting",
|
|
|
|
PreCommitted: "PreCommitted",
|
|
|
|
Committing: "Committing",
|
|
|
|
Proving: "Proving",
|
|
|
|
|
|
|
|
SealFailed: "SealFailed",
|
|
|
|
PreCommitFailed: "PreCommitFailed",
|
|
|
|
SealCommitFailed: "SealCommitFailed",
|
|
|
|
CommitFailed: "CommitFailed",
|
|
|
|
|
2019-12-03 23:42:22 +00:00
|
|
|
FailedUnrecoverable: "FailedUnrecoverable",
|
2019-11-01 13:58:48 +00:00
|
|
|
}
|
|
|
|
|
2019-11-01 12:01:16 +00:00
|
|
|
// StorageMiner is a low-level interface to the Filecoin network storage miner node
|
|
|
|
type StorageMiner interface {
|
|
|
|
Common
|
|
|
|
|
|
|
|
ActorAddress(context.Context) (address.Address, error)
|
|
|
|
|
2019-11-21 14:10:51 +00:00
|
|
|
ActorSectorSize(context.Context, address.Address) (uint64, error)
|
|
|
|
|
2019-11-01 12:01:16 +00:00
|
|
|
// Temp api for testing
|
|
|
|
StoreGarbageData(context.Context) error
|
|
|
|
|
|
|
|
// Get the status of a given sector by ID
|
2019-11-08 18:15:13 +00:00
|
|
|
SectorsStatus(context.Context, uint64) (SectorInfo, error)
|
2019-11-01 12:01:16 +00:00
|
|
|
|
|
|
|
// List all staged sectors
|
|
|
|
SectorsList(context.Context) ([]uint64, error)
|
|
|
|
|
|
|
|
SectorsRefs(context.Context) (map[string][]SealedRef, error)
|
2019-11-08 18:15:13 +00:00
|
|
|
|
2019-12-05 04:43:54 +00:00
|
|
|
SectorsUpdate(context.Context, uint64, SectorState) error
|
|
|
|
|
2019-11-21 16:23:42 +00:00
|
|
|
WorkerStats(context.Context) (sectorbuilder.WorkerStats, error)
|
2019-11-21 00:52:59 +00:00
|
|
|
|
|
|
|
// WorkerQueue registers a remote worker
|
|
|
|
WorkerQueue(context.Context) (<-chan sectorbuilder.WorkerTask, error)
|
|
|
|
|
|
|
|
WorkerDone(ctx context.Context, task uint64, res sectorbuilder.SealRes) error
|
2019-11-08 18:15:13 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
type SectorInfo struct {
|
|
|
|
SectorID uint64
|
|
|
|
State SectorState
|
|
|
|
CommD []byte
|
|
|
|
CommR []byte
|
|
|
|
Proof []byte
|
|
|
|
Deals []uint64
|
|
|
|
Ticket sectorbuilder.SealTicket
|
|
|
|
Seed sectorbuilder.SealSeed
|
2019-12-04 00:44:29 +00:00
|
|
|
LastErr string
|
2019-11-01 12:01:16 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
type SealedRef struct {
|
2019-12-01 17:58:31 +00:00
|
|
|
SectorID uint64
|
|
|
|
Offset uint64
|
|
|
|
Size uint64
|
2019-11-06 12:22:08 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
type SealedRefs struct {
|
|
|
|
Refs []SealedRef
|
2019-11-01 12:01:16 +00:00
|
|
|
}
|