mirror of
https://github.com/alterware/alterware-launcher.git
synced 2025-12-04 07:17:50 +00:00
[cdn] prefer lower latency; rate global 1.4x, same region 1.3x
This commit is contained in:
26
src/cdn.rs
26
src/cdn.rs
@@ -167,14 +167,12 @@ impl Server {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let distance_km = user_region.distance_to(self.region);
|
let distance_km = user_region.distance_to(self.region);
|
||||||
let region_multiplier = if distance_km == 0.0 {
|
let region_multiplier = if self.region == Region::Global {
|
||||||
|
1.4
|
||||||
|
} else if distance_km == 0.0 {
|
||||||
1.3
|
1.3
|
||||||
} else if user_region == Region::Unknown {
|
} else if user_region == Region::Unknown {
|
||||||
if self.region == Region::Global {
|
1.0
|
||||||
1.1
|
|
||||||
} else {
|
|
||||||
1.0
|
|
||||||
}
|
|
||||||
} else if distance_km <= 2000.0 {
|
} else if distance_km <= 2000.0 {
|
||||||
1.25
|
1.25
|
||||||
} else if distance_km <= 5000.0 {
|
} else if distance_km <= 5000.0 {
|
||||||
@@ -232,13 +230,15 @@ impl Hosts {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// find best host by rating, fifo if equal
|
// find best host by rating, then by latency
|
||||||
if let Some((idx, _)) = self
|
if let Some((idx, _)) = self.servers.iter().enumerate().max_by_key(|(_, server)| {
|
||||||
.servers
|
(
|
||||||
.iter()
|
server.rating,
|
||||||
.enumerate()
|
server
|
||||||
.max_by_key(|(idx, server)| (server.rating, -(*idx as i32)))
|
.latency
|
||||||
{
|
.map_or(0, |l| u64::MAX - l.as_millis() as u64),
|
||||||
|
)
|
||||||
|
}) {
|
||||||
let server = &self.servers[idx];
|
let server = &self.servers[idx];
|
||||||
*CURRENT_CDN.lock().unwrap() = Some(Arc::new(*server));
|
*CURRENT_CDN.lock().unwrap() = Some(Arc::new(*server));
|
||||||
*self.active_index.write().unwrap() = Some(idx);
|
*self.active_index.write().unwrap() = Some(idx);
|
||||||
|
|||||||
Reference in New Issue
Block a user