From 32b2bcf01b1c43ad8fd76b127099eae51d48d58e Mon Sep 17 00:00:00 2001 From: David Wragg Date: Tue, 19 May 2015 11:24:40 +0100 Subject: [PATCH] Eliminate the Routes Start method --- router/gossip_test.go | 7 ++----- router/router.go | 1 - router/routes.go | 15 ++++++--------- 3 files changed, 8 insertions(+), 15 deletions(-) diff --git a/router/gossip_test.go b/router/gossip_test.go index 9128ab39..840c44c9 100644 --- a/router/gossip_test.go +++ b/router/gossip_test.go @@ -17,11 +17,8 @@ type mockChannelConnection struct { // Construct a "passive" Router, i.e. without any goroutines, except // for Routes and GossipSenders. func NewTestRouter(name PeerName) *Router { - router := NewRouter(RouterConfig{}, name, "") - // need to create a dummy channel otherwise tests hang on nil - // channels when the Router invoked ConnectionMaker.Refresh - router.ConnectionMaker.actionChan = make(chan ConnectionMakerAction, ChannelSize) - router.Routes.Start() + router := NewRouter(RouterConfig{}, name, "nick") + router.Start() return router } diff --git a/router/router.go b/router/router.go index 13203bfc..640b1f88 100644 --- a/router/router.go +++ b/router/router.go @@ -83,7 +83,6 @@ func (router *Router) Start() { po, err = NewPcapO(router.Iface.Name) checkFatal(err) } - router.Routes.Start() router.ConnectionMaker.Start() router.UDPListener = router.listenUDP(router.Port, po) router.listenTCP(router.Port) diff --git a/router/routes.go b/router/routes.go index f244f28f..1f73833d 100644 --- a/router/routes.go +++ b/router/routes.go @@ -22,26 +22,23 @@ type Routes struct { } func NewRoutes(ourself *LocalPeer, peers *Peers) *Routes { + recalculate := make(chan *struct{}, 1) + wait := make(chan chan struct{}) routes := &Routes{ ourself: ourself, peers: peers, unicast: make(map[PeerName]PeerName), unicastAll: make(map[PeerName]PeerName), broadcast: make(map[PeerName][]PeerName), - broadcastAll: make(map[PeerName][]PeerName)} + broadcastAll: make(map[PeerName][]PeerName), + recalculate: recalculate, + wait: wait} routes.unicast[ourself.Name] = UnknownPeerName routes.unicastAll[ourself.Name] = UnknownPeerName routes.broadcast[ourself.Name] = []PeerName{} routes.broadcastAll[ourself.Name] = []PeerName{} - return routes -} - -func (routes *Routes) Start() { - recalculate := make(chan *struct{}, 1) - wait := make(chan chan struct{}) - routes.recalculate = recalculate - routes.wait = wait go routes.run(recalculate, wait) + return routes } func (routes *Routes) PeerNames() PeerNameSet {