Files
zeekayandHanzo Dev 37e2940ead mesh is the peer layer, network is the validator set
Two packages were named for the same word and meant different things. network/
dialed peers, exchanged keys, throttled and tracked them; nets/ tracked which
chains share a validator set and when they have all bootstrapped. One letter
apart, and neither name said which was which.

The peer layer is mesh — the word this estate already uses for it, in
lux-rs/node's own mesh.rs. That frees network for the thing that is actually a
network: a set of chains sharing a validator set. A network holds chains; a
chain belongs to one network.

github.com/luxfi/p2p stays what it is, the gossip library the VMs use. Three
concerns, three names, none of them borrowed from another.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-07 21:17:09 -07:00

46 lines
945 B
Go

// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
// See the file LICENSE for licensing terms.
package throttling
import (
"context"
"golang.org/x/time/rate"
)
var (
_ DialThrottler = (*dialThrottler)(nil)
_ DialThrottler = (*noDialThrottler)(nil)
)
type DialThrottler interface {
// Block until the event associated with this Acquire can happen.
// If [ctx] is canceled, gives up and returns an error.
Acquire(ctx context.Context) error
}
type dialThrottler struct {
limiter *rate.Limiter
}
type noDialThrottler struct{}
func (t dialThrottler) Acquire(ctx context.Context) error {
return t.limiter.Wait(ctx)
}
func NewDialThrottler(throttleLimit int) DialThrottler {
return dialThrottler{
limiter: rate.NewLimiter(rate.Limit(throttleLimit), throttleLimit),
}
}
func NewNoDialThrottler() DialThrottler {
return noDialThrottler{}
}
func (noDialThrottler) Acquire(context.Context) error {
return nil
}