lotus/node/repo/interface.go

62 lines
1.7 KiB
Go
Raw Normal View History

package repo
import (
"errors"
2020-03-27 23:00:21 +00:00
"github.com/filecoin-project/sector-storage/stores"
"github.com/ipfs/go-datastore"
"github.com/multiformats/go-multiaddr"
"github.com/filecoin-project/lotus/chain/types"
)
var (
ErrNoAPIEndpoint = errors.New("API not running (no endpoint)")
2019-07-23 18:49:09 +00:00
ErrNoAPIToken = errors.New("API token not set")
ErrRepoAlreadyLocked = errors.New("repo is already locked (lotus daemon already running)")
ErrClosedRepo = errors.New("repo is no longer open")
)
type Repo interface {
// APIEndpoint returns multiaddress for communication with Lotus API
APIEndpoint() (multiaddr.Multiaddr, error)
2019-07-23 18:49:09 +00:00
// APIToken returns JWT API Token for use in operations that require auth
APIToken() ([]byte, error)
// Lock locks the repo for exclusive use.
Lock(RepoType) (LockedRepo, error)
}
type LockedRepo interface {
// Close closes repo and removes lock.
Close() error
// Returns datastore defined in this repo.
2019-07-10 15:38:35 +00:00
Datastore(namespace string) (datastore.Batching, error)
2020-07-06 23:39:30 +00:00
ListDatastores(namespace string) ([]int64, error)
2020-07-06 20:03:37 +00:00
DeleteDatastore(namespace string) error
// Returns config in this repo
Config() (interface{}, error)
SetConfig(func(interface{})) error
GetStorage() (stores.StorageConfig, error)
SetStorage(func(*stores.StorageConfig)) error
Stat(path string) (stores.FsStat, error)
2020-03-03 22:19:22 +00:00
// SetAPIEndpoint sets the endpoint of the current API
// so it can be read by API clients
SetAPIEndpoint(multiaddr.Multiaddr) error
2019-07-23 18:49:09 +00:00
// SetAPIToken sets JWT API Token for CLI
SetAPIToken([]byte) error
// KeyStore returns store of private keys for Filecoin transactions
KeyStore() (types.KeyStore, error)
2019-07-12 09:59:18 +00:00
2019-11-30 23:17:50 +00:00
// Path returns absolute path of the repo
2019-07-12 09:59:18 +00:00
Path() string
}