lotus/api/types.go

120 lines
2.8 KiB
Go
Raw Normal View History

package api
import (
"encoding/json"
2020-06-09 23:08:43 +00:00
"github.com/filecoin-project/go-address"
datatransfer "github.com/filecoin-project/go-data-transfer"
2020-06-09 23:08:43 +00:00
"github.com/filecoin-project/specs-actors/actors/abi"
"github.com/filecoin-project/specs-actors/actors/abi/big"
2020-06-09 23:08:43 +00:00
"github.com/filecoin-project/specs-actors/actors/builtin/miner"
"github.com/ipfs/go-cid"
2019-07-09 15:19:27 +00:00
"github.com/libp2p/go-libp2p-core/peer"
2020-07-31 08:27:22 +00:00
pubsub "github.com/libp2p/go-libp2p-pubsub"
ma "github.com/multiformats/go-multiaddr"
)
// TODO: check if this exists anywhere else
type MultiaddrSlice []ma.Multiaddr
func (m *MultiaddrSlice) UnmarshalJSON(raw []byte) (err error) {
var temp []string
if err := json.Unmarshal(raw, &temp); err != nil {
return err
}
res := make([]ma.Multiaddr, len(temp))
for i, str := range temp {
res[i], err = ma.NewMultiaddr(str)
if err != nil {
return err
}
}
*m = res
return nil
}
var _ json.Unmarshaler = new(MultiaddrSlice)
2020-03-04 23:52:28 +00:00
type ObjStat struct {
Size uint64
Links uint64
}
type PubsubScore struct {
ID peer.ID
2020-07-31 08:27:22 +00:00
Score *pubsub.PeerScoreSnapshot
}
2020-06-09 23:08:43 +00:00
type MinerInfo struct {
Owner address.Address // Must be an ID-address.
Worker address.Address // Must be an ID-address.
NewWorker address.Address // Must be an ID-address.
ControlAddresses []address.Address // Must be an ID-addresses.
2020-06-09 23:08:43 +00:00
WorkerChangeEpoch abi.ChainEpoch
PeerId *peer.ID
2020-06-09 23:08:43 +00:00
Multiaddrs []abi.Multiaddrs
2020-06-15 16:30:49 +00:00
SealProofType abi.RegisteredSealProof
2020-06-09 23:08:43 +00:00
SectorSize abi.SectorSize
WindowPoStPartitionSectors uint64
}
2020-07-01 11:47:40 +00:00
func NewApiMinerInfo(info *miner.MinerInfo) MinerInfo {
var pid *peer.ID
if peerID, err := peer.IDFromBytes(info.PeerId); err == nil {
pid = &peerID
}
2020-06-09 23:08:43 +00:00
mi := MinerInfo{
Owner: info.Owner,
Worker: info.Worker,
ControlAddresses: info.ControlAddresses,
NewWorker: address.Undef,
WorkerChangeEpoch: -1,
PeerId: pid,
2020-06-09 23:08:43 +00:00
Multiaddrs: info.Multiaddrs,
SealProofType: info.SealProofType,
SectorSize: info.SectorSize,
WindowPoStPartitionSectors: info.WindowPoStPartitionSectors,
}
if info.PendingWorkerKey != nil {
mi.NewWorker = info.PendingWorkerKey.NewWorker
mi.WorkerChangeEpoch = info.PendingWorkerKey.EffectiveAt
}
return mi
}
type MessageSendSpec struct {
MaxFee abi.TokenAmount
}
var DefaultMessageSendSpec = MessageSendSpec{
MaxFee: big.Zero(),
}
func (ms *MessageSendSpec) Get() MessageSendSpec {
if ms == nil {
return DefaultMessageSendSpec
}
return *ms
}
type DataTransferChannel struct {
TransferID datatransfer.TransferID
Status datatransfer.Status
BaseCID cid.Cid
IsInitiator bool
IsSender bool
Voucher string
Message string
OtherPeer peer.ID
Transferred uint64
}