Skip to content
Snippets Groups Projects
Commit 5a72ab68 authored by Wolfgang Welz's avatar Wolfgang Welz
Browse files

Make peerstorage a proper singleton

parent 205f30f7
No related branches found
No related tags found
No related merge requests found
...@@ -3,6 +3,7 @@ package peerstorage ...@@ -3,6 +3,7 @@ package peerstorage
import ( import (
"bytes" "bytes"
"strconv" "strconv"
"sync"
"github.com/iotaledger/goshimmer/packages/database" "github.com/iotaledger/goshimmer/packages/database"
"github.com/iotaledger/goshimmer/packages/events" "github.com/iotaledger/goshimmer/packages/events"
...@@ -14,6 +15,7 @@ import ( ...@@ -14,6 +15,7 @@ import (
const peerDbName string = "peers" const peerDbName string = "peers"
var peerDb database.Database var peerDb database.Database
var once sync.Once
func initDb() { func initDb() {
db, err := database.Get(peerDbName) db, err := database.Get(peerDbName)
...@@ -24,15 +26,21 @@ func initDb() { ...@@ -24,15 +26,21 @@ func initDb() {
peerDb = db peerDb = db
} }
func getDb() database.Database {
once.Do(initDb)
return peerDb
}
func storePeer(p *peer.Peer) { func storePeer(p *peer.Peer) {
err := peerDb.Set(p.Identity.Identifier, p.Marshal()) err := getDb().Set(p.Identity.Identifier, p.Marshal())
if err != nil { if err != nil {
panic(err) panic(err)
} }
} }
func removePeer(p *peer.Peer) { func removePeer(p *peer.Peer) {
err := peerDb.Delete(p.Identity.Identifier) err := getDb().Delete(p.Identity.Identifier)
if err != nil { if err != nil {
panic(err) panic(err)
} }
...@@ -41,7 +49,7 @@ func removePeer(p *peer.Peer) { ...@@ -41,7 +49,7 @@ func removePeer(p *peer.Peer) {
func loadPeers(plugin *node.Plugin) { func loadPeers(plugin *node.Plugin) {
var count int var count int
err := peerDb.ForEach(func(key []byte, value []byte) { err := getDb().ForEach(func(key []byte, value []byte) {
peer, err := peer.Unmarshal(value) peer, err := peer.Unmarshal(value)
if err != nil { if err != nil {
panic(err) panic(err)
...@@ -63,8 +71,6 @@ func loadPeers(plugin *node.Plugin) { ...@@ -63,8 +71,6 @@ func loadPeers(plugin *node.Plugin) {
} }
func Configure(plugin *node.Plugin) { func Configure(plugin *node.Plugin) {
initDb()
// do not store the entry nodes by ignoring all peers currently contained in konwnpeers // do not store the entry nodes by ignoring all peers currently contained in konwnpeers
// add peers from db // add peers from db
loadPeers(plugin) loadPeers(plugin)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment