From 5744879242e3a0a346baebc352f5888b82a0133f Mon Sep 17 00:00:00 2001 From: Anthony Laibe Date: Thu, 14 Oct 2021 16:14:55 +0200 Subject: [PATCH] refactor: add leveldb rendezvous persistence --- go.mod | 2 +- go.sum | 4 ++-- waku/node.go | 4 +--- waku/persistence/rendezvous.go | 34 ++++++++++++++++++++++++++++++++++ 4 files changed, 38 insertions(+), 6 deletions(-) create mode 100644 waku/persistence/rendezvous.go diff --git a/go.mod b/go.mod index 11135b65..e110b3a5 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,7 @@ require ( github.com/mattn/go-sqlite3 v1.14.6 github.com/minio/sha256-simd v1.0.0 github.com/multiformats/go-multiaddr v0.4.0 - github.com/status-im/go-waku-rendezvous v0.0.0-20211016214658-a0d71f947cee + github.com/status-im/go-waku-rendezvous v0.0.0-20211018070416-a93f3b70c432 github.com/stretchr/testify v1.7.0 github.com/syndtr/goleveldb v1.0.1-0.20210305035536-64b5b1c73954 go.opencensus.io v0.23.0 diff --git a/go.sum b/go.sum index 49a0f0c7..f9757092 100644 --- a/go.sum +++ b/go.sum @@ -1044,8 +1044,8 @@ github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DM github.com/src-d/envconfig v1.0.0/go.mod h1:Q9YQZ7BKITldTBnoxsE5gOeB5y66RyPXeue/R4aaNBc= github.com/status-im/go-ethereum v1.10.4-status.2 h1:uvcD2U7skYqPQviARFb4w3wZyFSYLs/pfVrJaRSDcCA= github.com/status-im/go-ethereum v1.10.4-status.2/go.mod h1:GvIhpdCOgMHI6i5xVPEZOrv/qSMeOFHbZh77AoyZUoE= -github.com/status-im/go-waku-rendezvous v0.0.0-20211016214658-a0d71f947cee h1:IczLt9Rd1QVFd7Llt3Eoresj7betaoIgAbL65YUBVPQ= -github.com/status-im/go-waku-rendezvous v0.0.0-20211016214658-a0d71f947cee/go.mod h1:Fa1uJjMz9MpfZc2tC5xdN9q90xg1VphSnevxWiBbFO0= +github.com/status-im/go-waku-rendezvous v0.0.0-20211018070416-a93f3b70c432 h1:cbNFU38iimo9fY4B7CdF/fvIF6tNPJIZjBbpfmW2EY4= +github.com/status-im/go-waku-rendezvous v0.0.0-20211018070416-a93f3b70c432/go.mod h1:A8t3i0CUGtXCA0aiLsP7iyikmk/KaD/2XVvNJqGCU20= github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q= github.com/status-im/status-go/extkeys v1.1.2/go.mod h1:hCmFzb2jiiVF2voZKYbzuhOQiHHCmyLJsZJXrFFg7BY= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= diff --git a/waku/node.go b/waku/node.go index d4e2d285..dec9f1fd 100644 --- a/waku/node.go +++ b/waku/node.go @@ -39,8 +39,6 @@ import ( "github.com/status-im/go-waku/waku/v2/protocol/lightpush" "github.com/status-im/go-waku/waku/v2/protocol/relay" "github.com/status-im/go-waku/waku/v2/protocol/store" - "github.com/syndtr/goleveldb/leveldb" - "github.com/syndtr/goleveldb/leveldb/opt" ) var log = logging.Logger("wakunode") @@ -134,7 +132,7 @@ func Execute(options Options) { } if options.RendezvousServer.Enable { - db, err := leveldb.OpenFile(options.RendezvousServer.DBPath, &opt.Options{OpenFilesCacheCapacity: 3}) + db, err := persistence.NewRendezVousLevelDB(options.RendezvousServer.DBPath) failOnErr(err, "RendezvousDB") storage := rendezvous.NewStorage(db) nodeOpts = append(nodeOpts, node.WithRendezvousServer(storage)) diff --git a/waku/persistence/rendezvous.go b/waku/persistence/rendezvous.go new file mode 100644 index 00000000..4586af31 --- /dev/null +++ b/waku/persistence/rendezvous.go @@ -0,0 +1,34 @@ +package persistence + +import ( + rendezvous "github.com/status-im/go-waku-rendezvous" + "github.com/syndtr/goleveldb/leveldb" + "github.com/syndtr/goleveldb/leveldb/opt" + "github.com/syndtr/goleveldb/leveldb/util" +) + +type RendezVousLevelDB struct { + db *leveldb.DB +} + +func NewRendezVousLevelDB(dBPath string) (*RendezVousLevelDB, error) { + db, err := leveldb.OpenFile(dBPath, &opt.Options{OpenFilesCacheCapacity: 3}) + + if err != nil { + return nil, err + } + + return &RendezVousLevelDB{db}, nil +} + +func (r *RendezVousLevelDB) Delete(key []byte) error { + return r.db.Delete(key, nil) +} + +func (r *RendezVousLevelDB) Put(key []byte, value []byte) error { + return r.db.Put(key, value, nil) +} + +func (r *RendezVousLevelDB) NewIterator(prefix []byte) rendezvous.Iterator { + return r.db.NewIterator(util.BytesPrefix(prefix), nil) +}