diff --git a/ui/models/channels.go b/ui/models/channels.go index f49a027..15f47fe 100644 --- a/ui/models/channels.go +++ b/ui/models/channels.go @@ -1,13 +1,18 @@ package models -import "github.com/edouardparis/lntop/network/models" +import ( + "sync" + + "github.com/edouardparis/lntop/network/models" +) type Channels struct { index map[uint64]*models.Channel list []*models.Channel + mu sync.RWMutex } -func (c Channels) List() []*models.Channel { +func (c *Channels) List() []*models.Channel { return c.list } @@ -23,12 +28,14 @@ func (c *Channels) GetByID(id uint64) *models.Channel { 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] return ok } func (c *Channels) Add(channel *models.Channel) { + c.mu.Lock() + defer c.mu.Unlock() if c.Contains(channel) { return } @@ -37,6 +44,9 @@ func (c *Channels) Add(channel *models.Channel) { } func (c *Channels) Update(newChannel *models.Channel) { + c.mu.Lock() + defer c.mu.Unlock() + oldChannel, ok := c.index[newChannel.ID] if !ok { c.Add(newChannel)