From b7e7c11a57385720449d5ca8496cccd685c7707a Mon Sep 17 00:00:00 2001 From: Matthias Radestock Date: Sun, 8 Nov 2015 12:29:36 +0000 Subject: [PATCH] refactor: make Overlay setting more explicit --- prog/weaver/main.go | 3 +-- router/gossip_test.go | 2 +- router/router.go | 15 +++++++-------- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/prog/weaver/main.go b/prog/weaver/main.go index 6620efcc4d..48bb26dfe3 100644 --- a/prog/weaver/main.go +++ b/prog/weaver/main.go @@ -203,7 +203,6 @@ func main() { sleeve := weave.NewSleeveOverlay(config.Port) overlays.Add("sleeve", sleeve) overlays.SetCompatOverlay(sleeve) - config.Overlay = overlays if routerName == "" { if iface == nil { @@ -235,7 +234,7 @@ func main() { config.PacketLogging = nopPacketLogging{} } - router := weave.NewRouter(config, name, nickName) + router := weave.NewRouter(config, name, nickName, overlays) Log.Println("Our name is", router.Ourself) var dockerCli *docker.Client diff --git a/router/gossip_test.go b/router/gossip_test.go index b618561ec2..3429ed5098 100644 --- a/router/gossip_test.go +++ b/router/gossip_test.go @@ -20,7 +20,7 @@ type mockChannelConnection struct { func NewTestRouter(name string) *Router { peerName, _ := PeerNameFromString(name) - router := NewRouter(Config{}, peerName, "nick") + router := NewRouter(Config{}, peerName, "nick", nil) router.Start() return router } diff --git a/router/router.go b/router/router.go index 56a7c48086..49f159957c 100644 --- a/router/router.go +++ b/router/router.go @@ -49,7 +49,6 @@ type Config struct { BufSz int PacketLogging PacketLogging Bridge Bridge - Overlay Overlay } type PacketLogging interface { @@ -59,6 +58,7 @@ type PacketLogging interface { type Router struct { Config + Overlay Overlay Ourself *LocalPeer Macs *MacCache Peers *Peers @@ -71,17 +71,18 @@ type Router struct { acceptLimiter *TokenBucket } -func NewRouter(config Config, name PeerName, nickName string) *Router { +func NewRouter(config Config, name PeerName, nickName string, overlay Overlay) *Router { router := &Router{Config: config, gossipChannels: make(GossipChannels)} if router.Bridge == nil { router.Bridge = NullBridge{} } - if router.Overlay == nil { - router.Overlay = NullOverlay{} + if overlay == nil { + overlay = NullOverlay{} } + router.Overlay = overlay router.Ourself = NewLocalPeer(name, nickName, router) router.Macs = NewMacCache(macMaxAge, func(mac net.HardwareAddr, peer *Peer) { @@ -92,11 +93,9 @@ func NewRouter(config Config, name PeerName, nickName string) *Router { router.Macs.Delete(peer) log.Println("Removed unreachable peer", peer) }) - router.Peers.OnInvalidateShortIDs(router.Overlay.InvalidateShortIDs) - + router.Peers.OnInvalidateShortIDs(overlay.InvalidateShortIDs) router.Routes = NewRoutes(router.Ourself, router.Peers) - router.Routes.OnChange(router.Overlay.InvalidateRoutes) - + router.Routes.OnChange(overlay.InvalidateRoutes) router.ConnectionMaker = NewConnectionMaker(router.Ourself, router.Peers, router.Port, router.PeerDiscovery) router.TopologyGossip = router.NewGossip("topology", router) router.acceptLimiter = NewTokenBucket(acceptMaxTokens, acceptTokenDelay)