mirror of
https://github.com/n0-computer/noq.git
synced 2026-09-25 04:35:17 +00:00
e63dd77376
For most setters this was just a case of changing the signature to take a `VarInt`. `max_idle_timeout` was a bit more involved in order to maintain a usable conversion from `Duration`. The internal representation was changed from `Duration` from `VarInt`, and an `IdleTimeout` newtype was introduced for the setter signature. `IdleTimeout` contains a `VarInt`-encoded millisecond value, and has a fallible conversion from `Duration`. The use of a newtype is preferable to a direct `Duration` -> `VarInt` encoding since there could be other `VarInt`-encoded values in future that use a different resolution than milliseconds. These changes allow callers to avoid the type-level possibility of error if they have a `VarInt` (or a value that can be converted infallibly into one). Fallible conversion from `VarInt` is still convenient with `TryInto`, and callers can handle the conversion errors without the indirection of `ConfigError`. Closes #1176. BREAKING CHANGE: The `max_concurrent_bidi_streams`, `max_concurrent_uni_streams`, `stream_receive_window`, and `receive_window` methods on `TransportConfig` now take `VarInt` arguments and return `&mut Self`. `TransportConfig::max_idle_timeout` now takes an `IdleTimeout` argument and returns `&mut Self`.