private static void UpdateLobbyCallbackImpl(IntPtr ptr, Result result) { GCHandle h = GCHandle.FromIntPtr(ptr); UpdateLobbyHandler callback = (UpdateLobbyHandler)h.Target; h.Free(); callback(result); }
/// <summary> /// Updates a lobby with data from the given transaction. You can call SetOwner() in this transaction. /// <para> /// This call has a rate limit of 10 updates per 5 seconds. If you fear you might hit that, it may be a good idea /// to batch your lobby updates into transactions. /// </para> /// </summary> /// <param name="lobbyId"></param> /// <param name="transaction"></param> /// <param name="callback"></param> public void UpdateLobby(long lobbyId, LobbyTransaction transaction, UpdateLobbyHandler callback) { GCHandle wrapped = GCHandle.Alloc(callback); Methods.UpdateLobby(methodsPtr, lobbyId, transaction.MethodsPtr, GCHandle.ToIntPtr(wrapped), UpdateLobbyCallbackImpl); transaction.MethodsPtr = IntPtr.Zero; }