da4528932a
Types for storage market Modify deals.Provider to implement storagemarket.StorageProvider Inject storagemarket.StorageProvider Storage Provider interfaces Storage Client interfaces Add ValidatePublishedDeal to ClientNodeAdapter Remove FundManager from client Remove Wallet from client Remove StateManager, Events, Wallet from client Rebasing - Copy types.BigInt, use TokenAmount/BigInt for token amounts - Remove auto-imported log package - Move `checkAskSignature` to a client file. - Plumb contexts through fix(storagemarket): use publish cids Switch back to publish message cids to reduce the dependency surface area
87 lines
2.4 KiB
Go
87 lines
2.4 KiB
Go
package modules
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/libp2p/go-libp2p-core/host"
|
|
inet "github.com/libp2p/go-libp2p-core/network"
|
|
pubsub "github.com/libp2p/go-libp2p-pubsub"
|
|
"go.uber.org/fx"
|
|
|
|
"github.com/filecoin-project/lotus/chain"
|
|
"github.com/filecoin-project/lotus/chain/blocksync"
|
|
"github.com/filecoin-project/lotus/chain/messagepool"
|
|
"github.com/filecoin-project/lotus/chain/sub"
|
|
"github.com/filecoin-project/lotus/node/hello"
|
|
"github.com/filecoin-project/lotus/node/modules/helpers"
|
|
"github.com/filecoin-project/lotus/peermgr"
|
|
retrievalmarket "github.com/filecoin-project/lotus/retrieval"
|
|
"github.com/filecoin-project/lotus/retrieval/discovery"
|
|
"github.com/filecoin-project/lotus/storagemarket"
|
|
)
|
|
|
|
func RunHello(mctx helpers.MetricsCtx, lc fx.Lifecycle, h host.Host, svc *hello.Service) {
|
|
h.SetStreamHandler(hello.ProtocolID, svc.HandleStream)
|
|
|
|
bundle := inet.NotifyBundle{
|
|
ConnectedF: func(_ inet.Network, c inet.Conn) {
|
|
go func() {
|
|
if err := svc.SayHello(helpers.LifecycleCtx(mctx, lc), c.RemotePeer()); err != nil {
|
|
log.Warnw("failed to say hello", "error", err)
|
|
return
|
|
}
|
|
}()
|
|
},
|
|
}
|
|
h.Network().Notify(&bundle)
|
|
}
|
|
|
|
func RunPeerMgr(mctx helpers.MetricsCtx, lc fx.Lifecycle, pmgr *peermgr.PeerMgr) {
|
|
go pmgr.Run(helpers.LifecycleCtx(mctx, lc))
|
|
}
|
|
|
|
func RunBlockSync(h host.Host, svc *blocksync.BlockSyncService) {
|
|
h.SetStreamHandler(blocksync.BlockSyncProtocolID, svc.HandleStream)
|
|
}
|
|
|
|
func HandleIncomingBlocks(mctx helpers.MetricsCtx, lc fx.Lifecycle, pubsub *pubsub.PubSub, s *chain.Syncer, h host.Host) {
|
|
ctx := helpers.LifecycleCtx(mctx, lc)
|
|
|
|
blocksub, err := pubsub.Subscribe("/fil/blocks")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
go sub.HandleIncomingBlocks(ctx, blocksub, s, h.ConnManager())
|
|
}
|
|
|
|
func HandleIncomingMessages(mctx helpers.MetricsCtx, lc fx.Lifecycle, pubsub *pubsub.PubSub, mpool *messagepool.MessagePool) {
|
|
ctx := helpers.LifecycleCtx(mctx, lc)
|
|
|
|
msgsub, err := pubsub.Subscribe("/fil/messages")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
go sub.HandleIncomingMessages(ctx, mpool, msgsub)
|
|
}
|
|
|
|
func RunDealClient(mctx helpers.MetricsCtx, lc fx.Lifecycle, c storagemarket.StorageClient) {
|
|
ctx := helpers.LifecycleCtx(mctx, lc)
|
|
|
|
lc.Append(fx.Hook{
|
|
OnStart: func(context.Context) error {
|
|
c.Run(ctx)
|
|
return nil
|
|
},
|
|
OnStop: func(context.Context) error {
|
|
c.Stop()
|
|
return nil
|
|
},
|
|
})
|
|
}
|
|
|
|
func RetrievalResolver(l *discovery.Local) retrievalmarket.PeerResolver {
|
|
return discovery.Multi(l)
|
|
}
|