mirror of
				https://github.com/yggdrasil-network/yggdrasil-go.git
				synced 2025-11-04 03:05:07 +03:00 
			
		
		
		
	Move add peer loop into Core, refresh it from active config
This commit is contained in:
		
							parent
							
								
									aed3c7e784
								
							
						
					
					
						commit
						87d393bd9f
					
				
					 2 changed files with 33 additions and 27 deletions
				
			
		| 
						 | 
				
			
			@ -7,6 +7,7 @@ import (
 | 
			
		|||
	"net"
 | 
			
		||||
	"regexp"
 | 
			
		||||
	"sync"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/yggdrasil-network/yggdrasil-go/src/address"
 | 
			
		||||
	"github.com/yggdrasil-network/yggdrasil-go/src/config"
 | 
			
		||||
| 
						 | 
				
			
			@ -91,14 +92,39 @@ func (c *Core) init() error {
 | 
			
		|||
	c.router.init(c)
 | 
			
		||||
	c.switchTable.init(c) // TODO move before peers? before router?
 | 
			
		||||
 | 
			
		||||
	if err := c.tcp.init(c); err != nil {
 | 
			
		||||
		c.log.Println("Failed to start TCP interface")
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// If any static peers were provided in the configuration above then we should
 | 
			
		||||
// configure them. The loop ensures that disconnected peers will eventually
 | 
			
		||||
// be reconnected with.
 | 
			
		||||
func (c *Core) addPeerLoop() {
 | 
			
		||||
	for {
 | 
			
		||||
		// Get the peers from the config - these could change!
 | 
			
		||||
		c.configMutex.RLock()
 | 
			
		||||
		peers := c.config.Peers
 | 
			
		||||
		interfacepeers := c.config.InterfacePeers
 | 
			
		||||
		c.configMutex.RUnlock()
 | 
			
		||||
 | 
			
		||||
		// Add peers from the Peers section
 | 
			
		||||
		for _, peer := range peers {
 | 
			
		||||
			c.AddPeer(peer, "")
 | 
			
		||||
			time.Sleep(time.Second)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Add peers from the InterfacePeers section
 | 
			
		||||
		for intf, intfpeers := range interfacepeers {
 | 
			
		||||
			for _, peer := range intfpeers {
 | 
			
		||||
				c.AddPeer(peer, intf)
 | 
			
		||||
				time.Sleep(time.Second)
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Sit for a while
 | 
			
		||||
		time.Sleep(time.Minute)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// UpdateConfig updates the configuration in Core and then signals the
 | 
			
		||||
// various module goroutines to reconfigure themselves if needed
 | 
			
		||||
func (c *Core) UpdateConfig(config *config.NodeConfig) {
 | 
			
		||||
| 
						 | 
				
			
			@ -245,6 +271,8 @@ func (c *Core) Start(nc *config.NodeConfig, log *log.Logger) error {
 | 
			
		|||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	go c.addPeerLoop()
 | 
			
		||||
 | 
			
		||||
	c.log.Println("Startup complete")
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue