From ac6e49dba46ddec14efe60b8ca10451bbeddcc44 Mon Sep 17 00:00:00 2001 From: Flaise Date: Fri, 2 Aug 2019 17:33:08 -0500 Subject: Implemented P2PSessionConnectFail callback and removed a result handler's Sync requirement --- src/matchmaking.rs | 2 +- src/networking.rs | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/matchmaking.rs b/src/matchmaking.rs index 8b9f2f7..f3e3b94 100644 --- a/src/matchmaking.rs +++ b/src/matchmaking.rs @@ -52,7 +52,7 @@ impl LobbyId { impl Matchmaking { pub fn request_lobby_list(&self, mut cb: F) - where F: FnMut(Result, SteamError>) + 'static + Send + Sync + where F: FnMut(SResult>) + 'static + Send { unsafe { let api_call = sys::SteamAPI_ISteamMatchmaking_RequestLobbyList(self.mm); diff --git a/src/networking.rs b/src/networking.rs index 696874b..ac2230c 100644 --- a/src/networking.rs +++ b/src/networking.rs @@ -109,3 +109,22 @@ unsafe impl Callback for P2PSessionRequest { } } } + +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct P2PSessionConnectFail { + pub remote: SteamId, + pub error: u8, +} + +unsafe impl Callback for P2PSessionConnectFail { + const ID: i32 = 1203; + const SIZE: i32 = ::std::mem::size_of::() as i32; + + unsafe fn from_raw(raw: *mut libc::c_void) -> Self { + let val = &mut *(raw as *mut sys::P2PSessionConnectFail_t); + P2PSessionConnectFail { + remote: SteamId(val.m_steamIDRemote.0), + error: val.m_eP2PSessionError, + } + } +} -- cgit v1.2.3