diff options
author | Janoš Guljaš <janos@users.noreply.github.com> | 2019-02-07 22:46:58 +0800 |
---|---|---|
committer | Rafael Matias <rafael@skyle.net> | 2019-02-19 20:11:51 +0800 |
commit | 85217b08bde168c0fd41d7265afe401454bb0f86 (patch) | |
tree | a5f8fcfeebf0f038bccd934754d4b6d57934de2f /cmd/swarm/main.go | |
parent | dcff622d43c6b7e41153d3f082e84a0718cb81c7 (diff) | |
download | go-tangerine-85217b08bde168c0fd41d7265afe401454bb0f86.tar go-tangerine-85217b08bde168c0fd41d7265afe401454bb0f86.tar.gz go-tangerine-85217b08bde168c0fd41d7265afe401454bb0f86.tar.bz2 go-tangerine-85217b08bde168c0fd41d7265afe401454bb0f86.tar.lz go-tangerine-85217b08bde168c0fd41d7265afe401454bb0f86.tar.xz go-tangerine-85217b08bde168c0fd41d7265afe401454bb0f86.tar.zst go-tangerine-85217b08bde168c0fd41d7265afe401454bb0f86.zip |
cmd/swarm/global-store: global store cmd (#19014)
(cherry picked from commit 33d0a0efa61fed2b16797fd12161519943943282)
Diffstat (limited to 'cmd/swarm/main.go')
-rw-r--r-- | cmd/swarm/main.go | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/cmd/swarm/main.go b/cmd/swarm/main.go index 1e96d1294..3053ea1b3 100644 --- a/cmd/swarm/main.go +++ b/cmd/swarm/main.go @@ -39,13 +39,16 @@ import ( "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/node" "github.com/ethereum/go-ethereum/p2p/enode" + "github.com/ethereum/go-ethereum/rpc" "github.com/ethereum/go-ethereum/swarm" bzzapi "github.com/ethereum/go-ethereum/swarm/api" swarmmetrics "github.com/ethereum/go-ethereum/swarm/metrics" + "github.com/ethereum/go-ethereum/swarm/storage/mock" + mockrpc "github.com/ethereum/go-ethereum/swarm/storage/mock/rpc" "github.com/ethereum/go-ethereum/swarm/tracing" sv "github.com/ethereum/go-ethereum/swarm/version" - "gopkg.in/urfave/cli.v1" + cli "gopkg.in/urfave/cli.v1" ) const clientIdentifier = "swarm" @@ -196,6 +199,7 @@ func init() { SwarmStorePath, SwarmStoreCapacity, SwarmStoreCacheCapacity, + SwarmGlobalStoreAPIFlag, } rpcFlags := []cli.Flag{ utils.WSEnabledFlag, @@ -324,8 +328,18 @@ func bzzd(ctx *cli.Context) error { func registerBzzService(bzzconfig *bzzapi.Config, stack *node.Node) { //define the swarm service boot function boot := func(_ *node.ServiceContext) (node.Service, error) { - // In production, mockStore must be always nil. - return swarm.NewSwarm(bzzconfig, nil) + var nodeStore *mock.NodeStore + if bzzconfig.GlobalStoreAPI != "" { + // connect to global store + client, err := rpc.Dial(bzzconfig.GlobalStoreAPI) + if err != nil { + return nil, fmt.Errorf("global store: %v", err) + } + globalStore := mockrpc.NewGlobalStore(client) + // create a node store for this swarm key on global store + nodeStore = globalStore.NewNodeStore(common.HexToAddress(bzzconfig.BzzKey)) + } + return swarm.NewSwarm(bzzconfig, nodeStore) } //register within the ethereum node if err := stack.Register(boot); err != nil { |