From adb2109aea12a7913bf8e8d55f6ba264036b3cec Mon Sep 17 00:00:00 2001 From: CosminPerRam Date: Sun, 29 Oct 2023 14:43:35 +0200 Subject: [PATCH] feat: add valve protocol query example --- CHANGELOG.md | 1 + examples/valve_protocol_query.rs | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 examples/valve_protocol_query.rs diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b5dd6d..6df35d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ Who knows what the future holds... - [Valheim](https://store.steampowered.com/app/892970/Valheim/) support. - [The Front](https://store.steampowered.com/app/2285150/The_Front/) support. - [Conan Exiles](https://store.steampowered.com/app/440900/Conan_Exiles/) support. +- Added a valve protocol query example. ### Breaking: Game: diff --git a/examples/valve_protocol_query.rs b/examples/valve_protocol_query.rs new file mode 100644 index 0000000..7fd210f --- /dev/null +++ b/examples/valve_protocol_query.rs @@ -0,0 +1,23 @@ +use std::net::{IpAddr, Ipv4Addr, SocketAddr}; +use std::time::Duration; +use gamedig::protocols::types::TimeoutSettings; +use gamedig::protocols::valve; +use gamedig::protocols::valve::{Engine, GatheringSettings}; + +fn main() { + let address = &SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 27015); + let engine = Engine::Source(None); // We don't specify a steam app id, let the query try to find it. + let gather_settings = GatheringSettings { + players: true, // We want to query for players + rules: false, // We don't want to query for rules + check_app_id: false, // Loosen up the query a bit by not checking app id + }; + + let read_timeout = Duration::from_secs(2); + let write_timeout = Duration::from_secs(3); + let retries = 1; // does another request if the first one fails. + let timeout_settings = TimeoutSettings::new(Some(read_timeout), Some(write_timeout), retries).unwrap(); + + let response = valve::query(address, engine, Some(gather_settings), Some(timeout_settings)); + println!("{response:#?}"); +}