Packages
mist
5.0.1
6.0.3
6.0.2
6.0.1
6.0.0
5.0.4
5.0.3
5.0.2
5.0.1
5.0.0
5.0.0-rc1
4.0.7
4.0.6
4.0.5
4.0.4
4.0.3
4.0.2
4.0.1
4.0.0
3.0.0
2.0.0
1.2.0
1.1.0
1.0.0
1.0.0-rc3
1.0.0-rc2
1.0.0-rc1
0.17.0
0.15.0
0.14.3
0.14.2
0.14.1
0.14.0
0.13.2
0.13.1
0.13.0
0.12.0
0.11.0
0.10.0
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.3
0.8.2
0.8.1
0.8.0
0.7.1
0.7.0
0.6.1
0.6.0
0.5.2
0.5.1
0.5.0
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.3
0.3.2
0.3.1
0.3.0
0.2.1
0.2.0
0.1.3
a misty Gleam web server
Current section
Files
Jump to
Current section
Files
src/mist/internal/http2/flow_control.gleam
import gleam/int
pub fn compute_receive_window(
receive_window_size: Int,
data_size: Int,
) -> #(Int, Int) {
let new_receive_window_size = receive_window_size - data_size
let max_window_increment = int.bitwise_shift_left(1, 31) - 1
let max_window_size = max_window_increment
let min_window_size = int.bitwise_shift_left(1, 30)
case new_receive_window_size > min_window_size {
True -> {
#(new_receive_window_size, 0)
}
False -> {
let updated_receive_window_size =
int.min(new_receive_window_size + max_window_increment, max_window_size)
let increment = updated_receive_window_size - new_receive_window_size
#(updated_receive_window_size, increment)
}
}
}
pub fn update_send_window(
current_send_window: Int,
increment: Int,
) -> Result(Int, String) {
let max_window_size = int.bitwise_shift_left(1, 31) - 1
let update = current_send_window + increment
case update > max_window_size {
True -> Error("Invalid update increment")
False -> Ok(update)
}
}