* Add retry count to TimeoutSettings
This can be used to specify how many times to re-send requests that
fail. The default value is "1" so the if the first request fails, 1 more
attempt will be made.
* Add retries to valve queries
* [Protocol] &Optional<TimeoutSettings> add get_retries_or_default
Allow fetching the number of retries or the default retries value from a
borrowed optional TimeoutSettings.
* [Protocol] Add retries to minecraft protocol
* [Protocol] Add retries to quake
* [Protocol] Add retries to gamespy
* [Protocol] Update TimeoutSettings docs, and change default retries to 0
* Remove logging from retry_on_timeout
* [Protocol] TimeoutSettings make retries non-optional
* [Protocol] Move retry logic into lower level query functions
Retries are now implemented as wrappers on the single function that
would need to be retried on timeout.
In order to avoid cloning of TimeoutSettings, Socket::apply_timeouts()
was changed to accept a borrowed TimeoutSettings. And extra helpers were
added to the TimeoutSettings impl to reduce repetition.
* [Examples] Add retries to the generic example
* Also retry on PacketSend error
Sending packets could also timeout and until error_generic_member_access
is stable we have no way of determining the type of the underlying
`std::error::Error`.
* Add retry unit tests
* [Docs] Update changelog
* [Games] Update game definitions to match node-gamedig names
* Update game file names to match definitions
* [Games] rename minecraft definitions to better match node
* [Games] Add test that all game files match definition name
* Update SteamApp to match node names
* [Games] Update the forest to match node-GameDig#367
* Clippy fix in games test
* [Docs] Update GAMES.md with new names
* [DOCS] Update changelog
* [Generic] Add struct for all extra request settings
Adds a new struct `ExtraRequestSettings` that contains all possible
extra settings for all protocols, and can be implicitly converted with
`.into()` into each protocol's extra settings type.
This is then used in a new query method
`query_with_timeout_and_extra_settings()` that passes the object on to
the selected protocol.
This also updates the generic example to set some of these generic
settings so that it can be used for certain queries like
"mc.hypixel.net".
* [Minecraft] Add `request_settings` parameter to auto query
This allows generic queries to pass through request settings when using
the `mc` game so that servers like `mc.hypixel.net` will still work when
using auto query.
* Fix generic examples tests (and enable example tests in pre-commit)
* [Protocol] Standardize The Ship fields
* [Protocol] Standardize FFOW fields
* [Protocol] Rename Valve's protocol field to protocol_version
* [Protocol] Rename Minecraft's version_protocol field to protocol_version
* [Protocol] Rename Valve's version field to game_version
* [Protocol] Rename Minecraft java version_name to game_version
* [Crate] Reformat RESPONSES.md
* [Protocol] Renamed Minecraft Java players_sample to players
* [Protocol] Rename Quake (1,2,3) version field to game_version
* [Protocol] Rename quake (1 and 2) game_type field to game_mode
* [Protocol] Rename Valve, FFOW, TS game field to game_mode
* [Generics] Rename game field/function to game_mode
* [Protocol] Change players_minimum, _maximum and _bots from those who werent u8 or u32 to u32
* [Protocol] Change instances of player score field type from u32 to i32
* [Crate] Nicer gramar in CHANGELOG
* [Protocol] Apply clippy fixes
* [Game] Add JC2MP support.
* [Game] Add game to changelog and games
* [Games] Add generic support to JC2MP.
* [Game] Add players_maximum and players_online
* [Protocol] Add initial files
* [Protocol] Add test to test the request
* [Protocol] Add initial query response type
* [Protocol] Parse teams
* [Protocol] Add players parse and add nice macro
* [Protocol] Add proper derives to structs
* [Protocol] Change to get all informations from one request
* [Protocol] Add Halo: CE support and update CHANGELOG.md
* [Protocol] Remove a .clone usage
* [Protocol] Add todo comment regarding code performance
* [Protocol] Use iterator instead of index range
* [Protocol] Initial packet receive implementation
* [Protocol] Add key extraction
* [Protocol] Fix new Ipv4Addr query address and get string with unended
* [Protocol] Properly parse the received data
* [Protocol] Add parse players
* [Protocol] Add bots
* [Protocol] Extract into functions
* [Protocol] Remove quotes from player name
* [Protocol] Add two and three files
* [Protocol] Make quake queries very modular
* [Protocol] Remove the need of a client instance
* [Protocol] Revesed if statement
* [Protocol] Apply clippy fixes and replace String by &str in get send header
* [Protocol] Add one and three implementations
* [Protocol] Add quake2 and quake3 to master_querant
* [Protocol] Fix Q2 implementation
* [Protocol] Change from Ipv4Addr to IpAddr
* [Protocol] Fix Q3 response header
* [Protocol] Fix Q3 response
* [Crate] Add Q1, 2 and 3 to changelog and protocols
* [Protocol] Extract client into separate file and add some docs
* [Service] Add initial files
* [Service] Add initial request packet
* [Service] Add filters
* [Service] Some clippy improvements
* [Service] Make query a vector of ipv4addr and port
* [Service] Add complete and singular query
* [Crate] Update md files
* [Service] Add docs and clippy adjustments
* [Service] Add hasTags and fix filters
* [Service] Use let some instead of match
* [Service] Add other filters
* [Service] Add nor and nand filters
* [Service] Remove 0.0.0.0:0 from query
* [Service] Remove dev testing test
* [Service] Add valve_master_server_query example
* [Protocol] Gamespy3 initial code
* [Protocol] Add rest of challenge solving
* [Protocol] Remove unused stuff
* [Protocol] Remove adding unused bytes
* [Protocol] Clean up code
* [Protocol] Make gs3 a struct
* [Protocol] Add initial key-value parsing
* [Protocol] Manage multiple packets
* [Protocol] Split server vars and other vars
* Revert "[Protocol] Split server vars and other vars"
This reverts commit 9a930aeb68802fcf3d0908a2e031dfea054d37d0.
* [Protocol] Proper packet management and initial response struct
* [Protocol] Fix players_minimum
* [Protocol] Fix server vars to parse only the first packet
* [Protocol] Update CHANGELOG.md
* [Protocol] Initial player parsing
* [Protocol] Split GS one and three
* [Protocol] Add common code file
* [Protocol] Change static to const
* [Protocol] Fix players_online and break on data to map on empty key
* [Protocol] Remove unused types and printlns
* [Protocol] Add teams parsing
* [Protocol] Split key_values and parsing data
* [Crate] Update PROTOCOLS.md