lotus/api/api_storage.go

133 lines
2.7 KiB
Go
Raw Normal View History

2019-11-01 12:01:16 +00:00
package api
import (
"context"
"github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-sectorbuilder"
2019-11-01 12:01:16 +00:00
)
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
2020-01-13 20:54:28 +00:00
// happy path
Empty
2019-11-01 12:01:16 +00:00
Packing // sector not in sealStore, and not on chain
Unsealed // sealing / queued
PreCommitting // on chain pre-commit
2020-01-20 22:04:46 +00:00
WaitSeed // waiting for seed
2019-11-01 12:01:16 +00:00
Committing
CommitWait // waiting for message to land on chain
2019-11-01 13:58:48 +00:00
Proving
2020-01-13 20:54:28 +00:00
_ // reserved
_
_
_
// recovery handling
// Reseal
_
_
_
_
_
_
_
// error modes
FailedUnrecoverable
2019-11-01 13:58:48 +00:00
SealFailed
PreCommitFailed
SealCommitFailed
CommitFailed
PackingFailed
2020-01-13 20:54:28 +00:00
_
_
_
Faulty // sector is corrupted or gone for some reason
FaultReported // sector has been declared as a fault on chain
FaultedFinal // fault declared on chain
2019-11-01 12:01:16 +00:00
)
var SectorStates = []string{
UndefinedSectorState: "UndefinedSectorState",
Empty: "Empty",
Packing: "Packing",
Unsealed: "Unsealed",
PreCommitting: "PreCommitting",
2020-01-20 22:04:46 +00:00
WaitSeed: "WaitSeed",
Committing: "Committing",
CommitWait: "CommitWait",
Proving: "Proving",
SealFailed: "SealFailed",
PreCommitFailed: "PreCommitFailed",
SealCommitFailed: "SealCommitFailed",
CommitFailed: "CommitFailed",
FailedUnrecoverable: "FailedUnrecoverable",
Faulty: "Faulty",
FaultReported: "FaultReported",
FaultedFinal: "FaultedFinal",
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)
ActorSectorSize(context.Context, address.Address) (uint64, error)
2019-11-01 12:01:16 +00:00
// Temp api for testing
PledgeSector(context.Context) error
2019-11-01 12:01:16 +00:00
// 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
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, sectorbuilder.WorkerCfg) (<-chan sectorbuilder.WorkerTask, error)
2019-11-21 00:52:59 +00:00
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-09 16:40:15 +00:00
Retries uint64
2019-12-09 16:40:15 +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
}