Files
node/pubsub/connections.go
zeekay 7cf87b230b node-unified is the node
The module already called itself github.com/luxfi/node while containing no node
in Go: cmd/luxd was twenty-one lines that printed the size of a few types, and
the Go column of the matrix measured a VM plugin. A repo that fetches the thing
it claims to be has not replaced it, so the Go sources move in — 1515 files,
the daemon and everything under it — and the build reaches outside this module
for nothing.

Rust and C++ sit beside it unchanged and are still measured against it by the
differential. That is the point of one repo: the reference implementation and
the two ports are the same checkout, so parity is a thing you can run rather
than a thing you assert.

Verified: builds, and the closure carries no lux-private — checked at build time
rather than believed. The daemon starts twelve chains on a local network
(P X C Q Z A B G K M F, plus D through its plugin) and reports healthy.
2026-09-07 16:15:25 -07:00

52 lines
930 B
Go

// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
// See the file LICENSE for licensing terms.
package pubsub
import (
"sync"
"github.com/luxfi/math/set"
)
type connections struct {
lock sync.RWMutex
conns set.Set[*connection]
connsList []Filter
}
func newConnections() *connections {
return &connections{conns: set.NewSet[*connection]()}
}
func (c *connections) Conns() []Filter {
c.lock.RLock()
defer c.lock.RUnlock()
return append([]Filter{}, c.connsList...)
}
func (c *connections) Remove(conn *connection) {
c.lock.Lock()
defer c.lock.Unlock()
c.conns.Remove(conn)
c.createConnsList()
}
func (c *connections) Add(conn *connection) {
c.lock.Lock()
defer c.lock.Unlock()
c.conns.Add(conn)
c.createConnsList()
}
func (c *connections) createConnsList() {
resp := make([]Filter, 0, len(c.conns))
for c := range c.conns {
resp = append(resp, c)
}
c.connsList = resp
}