You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
AM2R-Multitroid/scripts/udp_client_cleanup_old_frag...

36 lines
1.3 KiB

/// udp_client_cleanup_old_fragments()
// Clean up incomplete fragment packets that have timed out
// Call this in Step event
var current = current_time;
var frag_id = ds_map_find_first(global.fragment_timestamps);
while (!is_undefined(frag_id)) {
var next_id = ds_map_find_next(global.fragment_timestamps, frag_id);
var timestamp = ds_map_find_value(global.fragment_timestamps, frag_id);
// If fragment is older than timeout, clean it up
if (current - timestamp > global.FRAGMENT_TIMEOUT) {
// Clean up the fragment buffers
if (ds_map_exists(global.fragment_buffers, frag_id)) {
var frag_map = ds_map_find_value(global.fragment_buffers, frag_id);
var total = ds_map_find_value(frag_map, "total");
// Delete any stored fragment buffers
for (var i = 0; i < total; i++) {
if (ds_map_exists(frag_map, i)) {
var frag_buf = ds_map_find_value(frag_map, i);
buffer_delete(frag_buf);
}
}
ds_map_destroy(frag_map);
ds_map_delete(global.fragment_buffers, frag_id);
}
ds_map_delete(global.fragment_timestamps, frag_id);
}
frag_id = next_id;
}