config.go 884 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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. size := this.UplinkCapacity * 1024 * 1024 / this.Mtu / (1000 / this.Tti) / 2
  15. if size == 0 {
  16. size = 8
  17. }
  18. return size
  19. }
  20. func (this *Config) GetReceivingWindowSize() uint32 {
  21. size := this.DownlinkCapacity * 1024 * 1024 / this.Mtu / (1000 / this.Tti) / 2
  22. if size == 0 {
  23. size = 8
  24. }
  25. return size
  26. }
  27. func DefaultConfig() Config {
  28. return Config{
  29. Mtu: 1350,
  30. Tti: 20,
  31. UplinkCapacity: 5,
  32. DownlinkCapacity: 20,
  33. Congestion: false,
  34. WriteBuffer: 8 * 1024 * 1024,
  35. }
  36. }
  37. var (
  38. effectiveConfig = DefaultConfig()
  39. )