config.go 788 B

12345678910111213141516171819202122232425262728293031323334353637
  1. package kcp
  2. type Config struct {
  3. Mtu uint32 // Maximum transmission unit
  4. Tti uint32
  5. UplinkCapacity uint32
  6. DownlinkCapacity uint32
  7. Congestion bool
  8. WriteBuffer uint32
  9. }
  10. func (this *Config) Apply() {
  11. effectiveConfig = *this
  12. }
  13. func (this *Config) GetSendingWindowSize() uint32 {
  14. return this.UplinkCapacity * 1024 * 1024 / this.Mtu / (1000 / this.Tti)
  15. }
  16. func (this *Config) GetReceivingWindowSize() uint32 {
  17. return this.DownlinkCapacity * 1024 * 1024 / this.Mtu / (1000 / this.Tti)
  18. }
  19. func DefaultConfig() Config {
  20. return Config{
  21. Mtu: 1350,
  22. Tti: 20,
  23. UplinkCapacity: 5,
  24. DownlinkCapacity: 20,
  25. Congestion: false,
  26. WriteBuffer: 8 * 1024 * 1024,
  27. }
  28. }
  29. var (
  30. effectiveConfig = DefaultConfig()
  31. )