diff options
author | holisticode <holistic.computing@gmail.com> | 2017-12-12 05:56:06 +0800 |
---|---|---|
committer | Felix Lange <fjl@users.noreply.github.com> | 2017-12-12 05:56:06 +0800 |
commit | 32516c768ec09e2a71cab5983d2c8b8ae5d92fc7 (patch) | |
tree | 9f02126fd6f219163776ad1ab8a8b924a32811a4 /swarm/network | |
parent | 1a32bdf92cceb7a42e5636e12d95609e17b8f786 (diff) | |
download | dexon-32516c768ec09e2a71cab5983d2c8b8ae5d92fc7.tar dexon-32516c768ec09e2a71cab5983d2c8b8ae5d92fc7.tar.gz dexon-32516c768ec09e2a71cab5983d2c8b8ae5d92fc7.tar.bz2 dexon-32516c768ec09e2a71cab5983d2c8b8ae5d92fc7.tar.lz dexon-32516c768ec09e2a71cab5983d2c8b8ae5d92fc7.tar.xz dexon-32516c768ec09e2a71cab5983d2c8b8ae5d92fc7.tar.zst dexon-32516c768ec09e2a71cab5983d2c8b8ae5d92fc7.zip |
cmd/swarm: add config file (#15548)
This commit adds a TOML configuration option to swarm. It reuses
the TOML configuration structure used in geth with swarm
customized items.
The commit:
* Adds a "dumpconfig" command to the swarm executable which
allows printing the (default) configuration to stdout, which
then can be redirected to a file in order to customize it.
* Adds a "--config <file>" option to the swarm executable which will
allow to load a configuration file in TOML format from the
specified location in order to initialize the Swarm node The
override priorities are like follows: environment variables
override command line arguments override config file override
default config.
Diffstat (limited to 'swarm/network')
-rw-r--r-- | swarm/network/hive.go | 12 | ||||
-rw-r--r-- | swarm/network/kademlia/kademlia.go | 2 | ||||
-rw-r--r-- | swarm/network/kademlia/kademlia_test.go | 10 | ||||
-rw-r--r-- | swarm/network/syncer.go | 9 |
4 files changed, 22 insertions, 11 deletions
diff --git a/swarm/network/hive.go b/swarm/network/hive.go index d37b7e400..2504a4610 100644 --- a/swarm/network/hive.go +++ b/swarm/network/hive.go @@ -70,19 +70,25 @@ type HiveParams struct { *kademlia.KadParams } -func NewHiveParams(path string) *HiveParams { - kad := kademlia.NewKadParams() +//create default params +func NewDefaultHiveParams() *HiveParams { + kad := kademlia.NewDefaultKadParams() // kad.BucketSize = bucketSize // kad.MaxProx = maxProx // kad.ProxBinSize = proxBinSize return &HiveParams{ CallInterval: callInterval, - KadDbPath: filepath.Join(path, "bzz-peers.json"), KadParams: kad, } } +//this can only finally be set after all config options (file, cmd line, env vars) +//have been evaluated +func (self *HiveParams) Init(path string) { + self.KadDbPath = filepath.Join(path, "bzz-peers.json") +} + func NewHive(addr common.Hash, params *HiveParams, swapEnabled, syncEnabled bool) *Hive { kad := kademlia.New(kademlia.Address(addr), params.KadParams) return &Hive{ diff --git a/swarm/network/kademlia/kademlia.go b/swarm/network/kademlia/kademlia.go index bf976a3e1..0abc42a19 100644 --- a/swarm/network/kademlia/kademlia.go +++ b/swarm/network/kademlia/kademlia.go @@ -52,7 +52,7 @@ type KadParams struct { ConnRetryExp int } -func NewKadParams() *KadParams { +func NewDefaultKadParams() *KadParams { return &KadParams{ MaxProx: maxProx, ProxBinSize: proxBinSize, diff --git a/swarm/network/kademlia/kademlia_test.go b/swarm/network/kademlia/kademlia_test.go index 417ccecae..88858908a 100644 --- a/swarm/network/kademlia/kademlia_test.go +++ b/swarm/network/kademlia/kademlia_test.go @@ -63,7 +63,7 @@ func TestOn(t *testing.T) { if !ok1 || !ok2 { t.Errorf("oops") } - kad := New(addr, NewKadParams()) + kad := New(addr, NewDefaultKadParams()) err := kad.On(&testNode{addr: other}, nil) _ = err } @@ -72,7 +72,7 @@ func TestBootstrap(t *testing.T) { test := func(test *bootstrapTest) bool { // for any node kad.le, Target and N - params := NewKadParams() + params := NewDefaultKadParams() params.MaxProx = test.MaxProx params.BucketSize = test.BucketSize params.ProxBinSize = test.BucketSize @@ -127,7 +127,7 @@ func TestFindClosest(t *testing.T) { test := func(test *FindClosestTest) bool { // for any node kad.le, Target and N - params := NewKadParams() + params := NewDefaultKadParams() params.MaxProx = 7 kad := New(test.Self, params) var err error @@ -198,7 +198,7 @@ var ( func TestProxAdjust(t *testing.T) { r := rand.New(rand.NewSource(time.Now().UnixNano())) self := gen(Address{}, r).(Address) - params := NewKadParams() + params := NewDefaultKadParams() params.MaxProx = 7 kad := New(self, params) @@ -232,7 +232,7 @@ func TestSaveLoad(t *testing.T) { r := rand.New(rand.NewSource(time.Now().UnixNano())) addresses := gen([]Address{}, r).([]Address) self := RandomAddress() - params := NewKadParams() + params := NewDefaultKadParams() params.MaxProx = 7 kad := New(self, params) diff --git a/swarm/network/syncer.go b/swarm/network/syncer.go index d76af022c..6d729fcb9 100644 --- a/swarm/network/syncer.go +++ b/swarm/network/syncer.go @@ -131,9 +131,8 @@ type SyncParams struct { } // constructor with default values -func NewSyncParams(bzzdir string) *SyncParams { +func NewDefaultSyncParams() *SyncParams { return &SyncParams{ - RequestDbPath: filepath.Join(bzzdir, "requests"), RequestDbBatchSize: requestDbBatchSize, KeyBufferSize: keyBufferSize, SyncBufferSize: syncBufferSize, @@ -144,6 +143,12 @@ func NewSyncParams(bzzdir string) *SyncParams { } } +//this can only finally be set after all config options (file, cmd line, env vars) +//have been evaluated +func (self *SyncParams) Init(path string) { + self.RequestDbPath = filepath.Join(path, "requests") +} + // syncer is the agent that manages content distribution/storage replication/chunk storeRequest forwarding type syncer struct { *SyncParams // sync parameters |