diff options
| author | Matthew Collins <[email protected]> | 2021-04-04 01:35:52 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2021-04-04 01:35:52 +0100 |
| commit | 7367f3fd900cf9220085085c00b44b9eb963dea1 (patch) | |
| tree | d8d2a9d587c8592ce86fa412f4557b49ebff49c9 | |
| parent | Merge pull request #43 from WilliamVenner/ugc_item_file_type (diff) | |
| parent | Add `SteamServersConnected`, `SteamServersDisconnected` and `SteamServerConne... (diff) | |
| download | steamworks-rs-7367f3fd900cf9220085085c00b44b9eb963dea1.tar.xz steamworks-rs-7367f3fd900cf9220085085c00b44b9eb963dea1.zip | |
Merge pull request #44 from WilliamVenner/connection_callbacks
Add `SteamServersConnected`, `SteamServersDisconnected` and `SteamServerConnectFailure` callbacks
| -rw-r--r-- | src/user.rs | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/user.rs b/src/user.rs index eb81ac3..cffdae1 100644 --- a/src/user.rs +++ b/src/user.rs @@ -209,6 +209,63 @@ unsafe impl Callback for ValidateAuthTicketResponse { } } +/// Called when a connection to the Steam servers is made. +#[derive(Clone, Debug)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +pub struct SteamServersConnected; + +unsafe impl Callback for SteamServersConnected { + const ID: i32 = 101; + const SIZE: i32 = ::std::mem::size_of::<sys::SteamServersConnected_t>() as i32; + + unsafe fn from_raw(_: *mut c_void) -> Self { + SteamServersConnected + } +} + +/// Called when the connection to the Steam servers is lost. +#[derive(Clone, Debug)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +pub struct SteamServersDisconnected { + /// The reason we were disconnected from the Steam servers + pub reason: SteamError +} + +unsafe impl Callback for SteamServersDisconnected { + const ID: i32 = 103; + const SIZE: i32 = ::std::mem::size_of::<sys::SteamServersDisconnected_t>() as i32; + + unsafe fn from_raw(raw: *mut c_void) -> Self { + let val = &mut *(raw as *mut sys::SteamServersDisconnected_t); + SteamServersDisconnected { + reason: val.m_eResult.into() + } + } +} + +/// Called when the connection to the Steam servers fails. +#[derive(Clone, Debug)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +pub struct SteamServerConnectFailure { + /// The reason we failed to connect to the Steam servers + pub reason: SteamError, + /// Whether we are still retrying the connection. + pub still_retrying: bool, +} + +unsafe impl Callback for SteamServerConnectFailure { + const ID: i32 = 102; + const SIZE: i32 = ::std::mem::size_of::<sys::SteamServerConnectFailure_t>() as i32; + + unsafe fn from_raw(raw: *mut c_void) -> Self { + let val = &mut *(raw as *mut sys::SteamServerConnectFailure_t); + SteamServerConnectFailure { + reason: val.m_eResult.into(), + still_retrying: val.m_bStillRetrying + } + } +} + /// Errors from `ValidateAuthTicketResponse` #[derive(Debug, Error)] pub enum AuthSessionValidateError { |