mirror of
				https://github.com/yggdrasil-network/yggdrasil-go.git
				synced 2025-11-04 11:15:07 +03:00 
			
		
		
		
	Identify switchport for queue based on coords in stream ID
This commit is contained in:
		
							parent
							
								
									8113b4cc22
								
							
						
					
					
						commit
						0b1a6611fd
					
				
					 3 changed files with 20 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -529,10 +529,12 @@ func (a *admin) getData_getSwitchQueues() admin_nodeInfo {
 | 
			
		|||
	getSwitchQueues := func() {
 | 
			
		||||
		queues := make([]map[string]interface{}, 0)
 | 
			
		||||
		for k, v := range switchTable.queues.bufs {
 | 
			
		||||
			nexthop := switchTable.bestPortForCoords([]byte(k))
 | 
			
		||||
			queue := map[string]interface{}{
 | 
			
		||||
				"queue_id":      k,
 | 
			
		||||
				"queue_size":    v.size,
 | 
			
		||||
				"queue_packets": len(v.packets),
 | 
			
		||||
				"queue_port":    nexthop,
 | 
			
		||||
			}
 | 
			
		||||
			queues = append(queues, queue)
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -541,6 +541,22 @@ func switch_getPacketStreamID(packet []byte) string {
 | 
			
		|||
	return string(switch_getPacketCoords(packet))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Find the best port for a given set of coords
 | 
			
		||||
func (t *switchTable) bestPortForCoords(coords []byte) switchPort {
 | 
			
		||||
	table := t.getTable()
 | 
			
		||||
	var best switchPort
 | 
			
		||||
	bestDist := table.self.dist(coords)
 | 
			
		||||
	for to, elem := range table.elems {
 | 
			
		||||
		dist := elem.locator.dist(coords)
 | 
			
		||||
		if !(dist < bestDist) {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		best = to
 | 
			
		||||
		bestDist = dist
 | 
			
		||||
	}
 | 
			
		||||
	return best
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Handle an incoming packet
 | 
			
		||||
// Either send it to ourself, or to the first idle peer that's free
 | 
			
		||||
// Returns true if the packet has been handled somehow, false if it should be queued
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue