diff options
author | holisticode <holistic.computing@gmail.com> | 2019-02-07 22:49:19 +0800 |
---|---|---|
committer | Rafael Matias <rafael@skyle.net> | 2019-02-19 20:06:13 +0800 |
commit | d1ace4f344616fb6fa8643872c1f9cac89f8549e (patch) | |
tree | 807c6d7af3875e3aedc5fe6b24c463205cffab19 /swarm/api | |
parent | 637a75d61a13ee8a89a702a2eadb5ace3c79e7da (diff) | |
download | dexon-d1ace4f344616fb6fa8643872c1f9cac89f8549e.tar dexon-d1ace4f344616fb6fa8643872c1f9cac89f8549e.tar.gz dexon-d1ace4f344616fb6fa8643872c1f9cac89f8549e.tar.bz2 dexon-d1ace4f344616fb6fa8643872c1f9cac89f8549e.tar.lz dexon-d1ace4f344616fb6fa8643872c1f9cac89f8549e.tar.xz dexon-d1ace4f344616fb6fa8643872c1f9cac89f8549e.tar.zst dexon-d1ace4f344616fb6fa8643872c1f9cac89f8549e.zip |
swarm: Debug API and HasChunks() API endpoint (#18980)
(cherry picked from commit 41597c2856d6ac7328baca1340c3e36ab0edd382)
Diffstat (limited to 'swarm/api')
-rw-r--r-- | swarm/api/inspector.go | 58 | ||||
-rw-r--r-- | swarm/api/testapi.go | 34 |
2 files changed, 58 insertions, 34 deletions
diff --git a/swarm/api/inspector.go b/swarm/api/inspector.go new file mode 100644 index 000000000..6706b32e6 --- /dev/null +++ b/swarm/api/inspector.go @@ -0,0 +1,58 @@ +// Copyright 2019 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. + +package api + +import ( + "context" + + "github.com/ethereum/go-ethereum/swarm/network" + "github.com/ethereum/go-ethereum/swarm/storage" +) + +type Inspector struct { + api *API + hive *network.Hive + netStore *storage.NetStore +} + +func NewInspector(api *API, hive *network.Hive, netStore *storage.NetStore) *Inspector { + return &Inspector{api, hive, netStore} +} + +// Hive prints the kademlia table +func (inspector *Inspector) Hive() string { + return inspector.hive.String() +} + +type HasInfo struct { + Addr string `json:"address"` + Has bool `json:"has"` +} + +// Has checks whether each chunk address is present in the underlying datastore, +// the bool in the returned structs indicates if the underlying datastore has +// the chunk stored with the given address (true), or not (false) +func (inspector *Inspector) Has(chunkAddresses []storage.Address) []HasInfo { + results := make([]HasInfo, 0) + for _, addr := range chunkAddresses { + res := HasInfo{} + res.Addr = addr.String() + res.Has = inspector.netStore.Has(context.Background(), addr) + results = append(results, res) + } + return results +} diff --git a/swarm/api/testapi.go b/swarm/api/testapi.go deleted file mode 100644 index 6fec55f55..000000000 --- a/swarm/api/testapi.go +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2016 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. - -package api - -import ( - "github.com/ethereum/go-ethereum/swarm/network" -) - -type Control struct { - api *API - hive *network.Hive -} - -func NewControl(api *API, hive *network.Hive) *Control { - return &Control{api, hive} -} - -func (c *Control) Hive() string { - return c.hive.String() -} |