[Games] Add timeout settings for proprietary games (#67)

Adding query functions with timeout settings to proprietary games allows
the generic query with timeout function to pass the timeout settings
through.

This does change how the pre-existing FFOW query_with_timeout function
worked: it accepted a non-optional timeout settings, this was changed to
optional to be consistent with other query_with_timeout functions and to
move deciding what to do if the user doesn't provide timeout settings to
a more central location.

Closes #64
This commit is contained in:
Tom 2023-07-10 13:17:49 +00:00 committed by GitHub
parent f3a792e325
commit e207e8dc95
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 28 additions and 15 deletions

View file

@ -1,6 +1,6 @@
use crate::{
protocols::{
types::{CommonPlayer, CommonResponse, GenericPlayer},
types::{CommonPlayer, CommonResponse, GenericPlayer, TimeoutSettings},
valve::{self, get_optional_extracted_data, Server, ServerPlayer, SteamApp},
GenericResponse,
},
@ -126,12 +126,18 @@ impl Response {
}
}
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<Response> {
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<Response> { query_with_timeout(address, port, None) }
pub fn query_with_timeout(
address: &IpAddr,
port: Option<u16>,
timeout_settings: Option<TimeoutSettings>,
) -> GDResult<Response> {
let valve_response = valve::query(
&SocketAddr::new(*address, port.unwrap_or(27015)),
SteamApp::TS.as_engine(),
None,
None,
timeout_settings,
)?;
Ok(Response::new_from_valve_response(valve_response))