ui/models: add mutex to channels

pull/1/head
Edouard Paris 5 years ago
parent 57fa289c7f
commit d6d711cc4c

@ -1,13 +1,18 @@
package models package models
import "github.com/edouardparis/lntop/network/models" import (
"sync"
"github.com/edouardparis/lntop/network/models"
)
type Channels struct { type Channels struct {
index map[uint64]*models.Channel index map[uint64]*models.Channel
list []*models.Channel list []*models.Channel
mu sync.RWMutex
} }
func (c Channels) List() []*models.Channel { func (c *Channels) List() []*models.Channel {
return c.list return c.list
} }
@ -23,12 +28,14 @@ func (c *Channels) GetByID(id uint64) *models.Channel {
return c.index[id] return c.index[id]
} }
func (c Channels) Contains(channel *models.Channel) bool { func (c *Channels) Contains(channel *models.Channel) bool {
_, ok := c.index[channel.ID] _, ok := c.index[channel.ID]
return ok return ok
} }
func (c *Channels) Add(channel *models.Channel) { func (c *Channels) Add(channel *models.Channel) {
c.mu.Lock()
defer c.mu.Unlock()
if c.Contains(channel) { if c.Contains(channel) {
return return
} }
@ -37,6 +44,9 @@ func (c *Channels) Add(channel *models.Channel) {
} }
func (c *Channels) Update(newChannel *models.Channel) { func (c *Channels) Update(newChannel *models.Channel) {
c.mu.Lock()
defer c.mu.Unlock()
oldChannel, ok := c.index[newChannel.ID] oldChannel, ok := c.index[newChannel.ID]
if !ok { if !ok {
c.Add(newChannel) c.Add(newChannel)

Loading…
Cancel
Save