From 066d0edf51babdd59f2be32cfef60b15478e6419 Mon Sep 17 00:00:00 2001 From: Anton Evangelatov Date: Wed, 16 Feb 2022 13:28:00 +0100 Subject: [PATCH] add SupportsStagingDeals trait --- node/repo/fsrepo.go | 33 +++++++++++++++++++-------------- node/repo/memrepo.go | 2 +- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/node/repo/fsrepo.go b/node/repo/fsrepo.go index ef91c650b..d8074e532 100644 --- a/node/repo/fsrepo.go +++ b/node/repo/fsrepo.go @@ -61,42 +61,47 @@ type RepoType interface { Config() interface{} } +// SupportsStagingDeals is a trait for services that support staging deals +type SupportsStagingDeals interface { + SupportsStagingDeals() +} + var FullNode fullNode type fullNode struct { } -func (f fullNode) Type() string { +func (fullNode) Type() string { return "FullNode" } -func (f fullNode) Config() interface{} { +func (fullNode) Config() interface{} { return config.DefaultFullNode() } var StorageMiner storageMiner -type storageMiner struct { -} +type storageMiner struct{} -func (f storageMiner) Type() string { +func (storageMiner) SupportsStagingDeals() {} + +func (storageMiner) Type() string { return "StorageMiner" } -func (f storageMiner) Config() interface{} { +func (storageMiner) Config() interface{} { return config.DefaultStorageMiner() } var Markets markets -type markets struct { -} +type markets struct{} -func (f markets) Type() string { +func (markets) Type() string { return "Markets" } -func (f markets) Config() interface{} { +func (markets) Config() interface{} { return config.DefaultStorageMiner() } @@ -105,11 +110,11 @@ type worker struct { var Worker worker -func (f worker) Type() string { +func (worker) Type() string { return "Worker" } -func (f worker) Config() interface{} { +func (worker) Config() interface{} { return &struct{}{} } @@ -118,11 +123,11 @@ var Wallet wallet type wallet struct { } -func (f wallet) Type() string { +func (wallet) Type() string { return "Wallet" } -func (f wallet) Config() interface{} { +func (wallet) Config() interface{} { return &struct{}{} } diff --git a/node/repo/memrepo.go b/node/repo/memrepo.go index a8e2d020f..977eec8b6 100644 --- a/node/repo/memrepo.go +++ b/node/repo/memrepo.go @@ -103,7 +103,7 @@ func (lmem *lockedMemRepo) Path() string { panic(err) // only used in tests, probably fine } - if lmem.t.Type() == "StorageMiner" || lmem.t.Type() == "Boost" { + if _, ok := lmem.t.(SupportsStagingDeals); ok { // this is required due to the method makeDealStaging from cmd/lotus-storage-miner/init.go // deal-staging is the directory deal files are staged in before being sealed into sectors // for offline deal flow.