10. Gap优化器实现

// Gap优化器
type GapOptimizer struct {
	gapData     map[string]int
	mu          sync.RWMutex
}

func NewGapOptimizer() *GapOptimizer {
	return &GapOptimizer{
		gapData: make(map[string]int),
	}
}

func (g *GapOptimizer) OptimizeGap(deviceID string, mtu int, rtt int64) int {
	g.mu.Lock()
	defer g.mu.Unlock()
	
	// 根据MTU和RTT计算最优Gap值
	// MTU越大,允许的Gap越大
	// RTT越小,允许的Gap越大
	baseGap := mtu / 100
	if baseGap < 0 {
		baseGap = 0
	}
	if baseGap > 20 {
		baseGap = 20
	}
	
	// 根据RTT调整
	rttFactor := 1.0
	if rtt > 20000 {
		rttFactor = 0.5
	} else if rtt > 10000 {
		rttFactor = 0.8
	}
	
	optimalGap := int(float64(baseGap) * rttFactor)
	if optimalGap < 0 {
		optimalGap = 0
	}
	
	g.gapData[deviceID] = optimalGap
	return optimalGap
}