Add channel window mode for slow links

This commit is contained in:
Mark Qvist 2023-05-11 21:28:13 +02:00
parent 6fd3edbb8f
commit 61626897e7

View File

@ -251,6 +251,7 @@ class Channel(contextlib.AbstractContextManager):
# the max window size for fast links will be used. # the max window size for fast links will be used.
RTT_FAST = 0.25 RTT_FAST = 0.25
RTT_MEDIUM = 0.75 RTT_MEDIUM = 0.75
RTT_SLOW = 1.45
# The minimum allowed flexibility of the window size. # The minimum allowed flexibility of the window size.
# The difference between window_max and window_min # The difference between window_max and window_min
@ -274,12 +275,19 @@ class Channel(contextlib.AbstractContextManager):
self._next_rx_sequence = 0 self._next_rx_sequence = 0
self._message_factories: dict[int, Type[MessageBase]] = {} self._message_factories: dict[int, Type[MessageBase]] = {}
self._max_tries = 5 self._max_tries = 5
self.fast_rate_rounds = 0
self.medium_rate_rounds = 0
if self._outlet.rtt > Channel.RTT_SLOW:
self.window = 1
self.window_max = 1
self.window_min = 1
self.window_flexibility = 1
else:
self.window = Channel.WINDOW self.window = Channel.WINDOW
self.window_max = Channel.WINDOW_MAX_SLOW self.window_max = Channel.WINDOW_MAX_SLOW
self.window_min = Channel.WINDOW_MIN self.window_min = Channel.WINDOW_MIN
self.window_flexibility = Channel.WINDOW_FLEXIBILITY self.window_flexibility = Channel.WINDOW_FLEXIBILITY
self.fast_rate_rounds = 0
self.medium_rate_rounds = 0
def __enter__(self) -> Channel: def __enter__(self) -> Channel:
return self return self