refactor: abstract button creation to a generic utility method
This commit is contained in:
parent
4959270f51
commit
9654fadfee
35
node.go
35
node.go
|
@ -1,26 +1,41 @@
|
||||||
package libs5_go
|
package libs5_go
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"git.lumeweb.com/LumeWeb/libs5-go/encoding"
|
||||||
"git.lumeweb.com/LumeWeb/libs5-go/service"
|
"git.lumeweb.com/LumeWeb/libs5-go/service"
|
||||||
"git.lumeweb.com/LumeWeb/libs5-go/structs"
|
"git.lumeweb.com/LumeWeb/libs5-go/structs"
|
||||||
|
"git.lumeweb.com/LumeWeb/libs5-go/utils"
|
||||||
|
"github.com/vmihailenco/msgpack/v5"
|
||||||
bolt "go.etcd.io/bbolt"
|
bolt "go.etcd.io/bbolt"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Metadata interface {
|
type Metadata interface {
|
||||||
ToJson() map[string]interface{}
|
ToJson() map[string]interface{}
|
||||||
}
|
}
|
||||||
|
|
||||||
type services struct {
|
type Services struct {
|
||||||
p2p *service.P2P
|
p2p *service.P2P
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *Services) P2P() *service.P2P {
|
||||||
|
return s.p2p
|
||||||
|
}
|
||||||
|
|
||||||
|
const cacheBucketName = "object-cache"
|
||||||
|
|
||||||
type Node struct {
|
type Node struct {
|
||||||
nodeConfig *NodeConfig
|
nodeConfig *NodeConfig
|
||||||
metadataCache *structs.Map
|
metadataCache *structs.Map
|
||||||
started bool
|
started bool
|
||||||
hashQueryRoutingTable *structs.Map
|
hashQueryRoutingTable *structs.Map
|
||||||
services services
|
services Services
|
||||||
|
cacheBucket *bolt.Bucket
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n *Node) Services() *Services {
|
||||||
|
return &n.services
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewNode(config *NodeConfig) *Node {
|
func NewNode(config *NodeConfig) *Node {
|
||||||
|
@ -57,6 +72,20 @@ func (n *Node) Db() *bolt.DB {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (n *Node) Start() error {
|
||||||
|
err :=
|
||||||
|
utils.CreateBucket(cacheBucketName, n.Db(), func(bucket *bolt.Bucket) {
|
||||||
|
n.cacheBucket = bucket
|
||||||
|
})
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
n.started = true
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
func (n *Node) Services() *S5Services {
|
func (n *Node) Services() *S5Services {
|
||||||
if n.nodeConfig != nil {
|
if n.nodeConfig != nil {
|
||||||
|
@ -117,7 +146,7 @@ func (n *Node) GetCachedStorageLocations(hash *encoding.Multihash, types []int)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
locations[NodeId(key)] = storageLocation
|
locations[key] = storageLocation
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return locations, nil
|
return locations, nil
|
||||||
|
|
|
@ -8,6 +8,7 @@ import (
|
||||||
"git.lumeweb.com/LumeWeb/libs5-go/net"
|
"git.lumeweb.com/LumeWeb/libs5-go/net"
|
||||||
"git.lumeweb.com/LumeWeb/libs5-go/protocol"
|
"git.lumeweb.com/LumeWeb/libs5-go/protocol"
|
||||||
"git.lumeweb.com/LumeWeb/libs5-go/structs"
|
"git.lumeweb.com/LumeWeb/libs5-go/structs"
|
||||||
|
"git.lumeweb.com/LumeWeb/libs5-go/utils"
|
||||||
"github.com/vmihailenco/msgpack/v5"
|
"github.com/vmihailenco/msgpack/v5"
|
||||||
bolt "go.etcd.io/bbolt"
|
bolt "go.etcd.io/bbolt"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
|
@ -93,16 +94,10 @@ func (p *P2P) Init() error {
|
||||||
}
|
}
|
||||||
p.localNodeID = encoding.NewNodeId(p.nodeKeyPair.PublicKey())
|
p.localNodeID = encoding.NewNodeId(p.nodeKeyPair.PublicKey())
|
||||||
|
|
||||||
err := p.Node().Db().Update(func(tx *bolt.Tx) error {
|
err := utils.CreateBucket(nodeBucketName, p.Node().Db(), func(bucket *bolt.Bucket) {
|
||||||
bucket, err := tx.CreateBucketIfNotExists([]byte(nodeBucketName))
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
p.nodesBucket = bucket
|
p.nodesBucket = bucket
|
||||||
|
|
||||||
return nil
|
|
||||||
})
|
})
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
package utils
|
||||||
|
|
||||||
|
import bolt "go.etcd.io/bbolt"
|
||||||
|
|
||||||
|
func CreateBucket(name string, db *bolt.DB, cb func(bucket *bolt.Bucket)) error {
|
||||||
|
err :=
|
||||||
|
db.Update(func(tx *bolt.Tx) error {
|
||||||
|
bucket, err := tx.CreateBucketIfNotExists([]byte(name))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
cb(bucket)
|
||||||
|
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
|
||||||
|
return err
|
||||||
|
}
|
Loading…
Reference in New Issue