config.go 946 B

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