1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-09 09:37:42 +08:00
Commit Graph

196 Commits

Author SHA1 Message Date
Dean Herbert
5fbed05d04
Merge pull request #11551 from smoogipoo/fix-leave-room-race-2
Fix client potentially not leaving a room on exiting multiplayer
2021-02-08 19:23:14 +09:00
smoogipoo
fb8e31a303 Fix incorrect connection building due to bad merges 2021-02-08 17:52:03 +09:00
smoogipoo
da85fb372d Merge branch 'master' into fix-multiplayer-client-connection-reliability 2021-02-08 13:43:24 +09:00
Dean Herbert
c5fa818630 Actually handle case of failing to achieve lock on SemaphoreSlim 2021-02-05 14:08:13 +09:00
Dean Herbert
cd67fe1091 Merge branch 'master' into fix-multiplayer-client-connection-reliability 2021-02-05 14:04:57 +09:00
smoogipoo
2e85ce5b82 Rename UserMods -> Mods for MultiplayerRoomUser 2021-02-05 12:40:16 +09:00
smoogipoo
85e63afcb4 Rename Mods -> RequiredMods 2021-02-05 12:36:25 +09:00
smoogipoo
65d45ec74c Unschedule cancellation 2021-02-03 20:50:22 +09:00
smoogipoo
97247b7a67 Fix unset key 2021-02-01 19:59:18 +09:00
smoogipoo
9c4c47599f Merge branch 'master' into freemods 2021-02-01 19:28:10 +09:00
smoogipoo
89a42d60fb General cleanup 2021-02-01 18:50:32 +09:00
smoogipoo
f538963607 Extra mods -> user mods 2021-02-01 17:57:32 +09:00
smoogipoo
ac2a995041 Add user and panel states 2021-02-01 17:54:56 +09:00
Bartłomiej Dach
c3ba92f057 Set canceled result in scheduleAsync
Was holding up the task completion source, and in consequence,
potentially the entire task chain.
2021-01-30 16:13:50 +01:00
Bartłomiej Dach
9ab1ad25eb Merge branch 'master' into fix-leave-room-race-2 2021-01-30 13:41:04 +01:00
smoogipoo
ab9a3e6dd0 Pass allowed mods and consume on server callback 2021-01-29 18:21:22 +09:00
Dean Herbert
a61444690e Remove all usage of CatchUnobservedExceptions
This should no longer be required with the recent framework side change
that stops a game from crashing on unobserved exceptions
(https://github.com/ppy/osu-framework/pull/4171).
2021-01-29 16:32:29 +09:00
Bartłomiej Dach
386f9f7842 Fix typos in comments 2021-01-28 22:36:07 +01:00
Dean Herbert
90a82f986b Fallback to using json for signalr communication if JIT is unavailable 2021-01-28 16:20:19 +09:00
smoogipoo
c408b46a21 Add AllowedMods to MultiplayerRoomSettings model 2021-01-27 22:25:14 +09:00
Bartłomiej Dach
4d4d97661e Fix connection loop always getting a cancelled token 2021-01-26 21:26:50 +01:00
smoogipoo
248989b3eb wip 2021-01-27 01:20:50 +09:00
smoogipoo
085115cba5 Make threading even more thread safe 2021-01-26 22:49:01 +09:00
Dean Herbert
b573c96c07 Move disconnect logic inside connection loop to ensure previous connection is disposed 2021-01-26 18:59:42 +09:00
Dean Herbert
15885c17af Remove unused usings 2021-01-26 18:07:43 +09:00
Dean Herbert
20cfa991bf Switch clients to MessagePack mode 2021-01-26 17:41:21 +09:00
Dean Herbert
e4fc604163 Setup all multiplayer model classes for MessagePack support 2021-01-26 16:26:03 +09:00
smoogipoo
bb44fcfe31 Prevent some data races 2021-01-25 21:01:39 +09:00
smoogipoo
964976f604 Use a task chain and fix potential misordering of events 2021-01-25 21:01:39 +09:00
Dean Herbert
0f09a7feb9 Avoid semaphore potentially getting held forever 2021-01-25 17:17:04 +09:00
Dean Herbert
994fb2667d Call DisposeAsync instead of StopAsync 2021-01-25 17:11:04 +09:00
Dean Herbert
c05ae3497a Make connect/disconnect private 2021-01-25 17:02:24 +09:00
Dean Herbert
d24d236468 Make OperationCanceledException throwing behaviour consistent 2021-01-22 14:34:58 +09:00
Dean Herbert
9f89b4e6d7 Rewrite connection logic to better handle failure cases
The main goal here is to ensure the connection is built each connection
attempt. Previously, the access token would never be updated, leading to
outdated tokens failing repeatedly (in the connection retry loop) and
never being able to establish a new connection as a result.

Due to threading considerations, this isn't as simple as I would hope it
to be. I'm open to proposals as to a better way of handling this.

Also, keep in mind that this logic will need to be abstracted and
(re)used in `SpectatorClient` as well. I've intentionally not done that
yet until we agree that this is a good direction forward.
2021-01-22 14:25:23 +09:00
Dan Balasescu
76e1f6e57b
Fix locking on incorrect object
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2021-01-21 12:45:44 +09:00
smoogipoo
6b139d4cf3 Reset task post-execution 2021-01-20 20:27:58 +09:00
smoogipoo
e005a1cc9f Remove unnecessary condition blocking the part 2021-01-20 20:16:34 +09:00
smoogipoo
5261c01849 Tie JoinRoom() and PartRoom() together 2021-01-20 19:43:42 +09:00
Bartłomiej Dach
eb53e32792 Use task completion source for room join flow
On Android, users were unable to join or create multiplayer rooms. The
root cause of that was that the both the wait and set of the
`ManualResetEvent` in `getRoomUsers` occurred on the same thread, which
created a chicken-and-egg situation - the set could not proceed until
the wait had actually completed.

Resolve by substituting the `ManualResetEvent` for a
`TaskCompletionSource` to achieve a promise-style task, which the
previous code was a crude approximation of anyway.

Closes #11385.
2021-01-17 14:40:22 +01:00
Dan Balasescu
67b5ebadf5
Merge branch 'master' into fix-is-connected-thread-safety 2021-01-15 12:56:21 +09:00
Salman Ahmed
560b1e970c
Merge branch 'master' into user-beatmap-downloading-states 2021-01-13 22:31:31 +03:00
Dean Herbert
7298adc9d9 Fix non-threadsafe usage of MultiplayerClient.IsConnected 2021-01-12 19:04:16 +09:00
Bartłomiej Dach
0d5fbb15ac Fix up code comments
Default value restated in xmldoc was snipped because it's made redundant
by the initialiser and possibly bound to be outdated at some point.
2021-01-11 20:31:52 +01:00
Salman Ahmed
90fb67b377 Update code in-line with decided direction 2021-01-11 20:52:24 +03:00
Dean Herbert
deb1ad7bca
Merge branch 'master' into disable-repeat-multi-actions 2021-01-04 23:38:29 +09:00
Salman Ahmed
839f5a7570 Ensure clients don't blow up when given user isn't in room 2021-01-03 18:36:37 +03:00
Salman Ahmed
152e9ecccf Make BeatmapAvailability class in-line with other online data structures 2021-01-03 18:36:05 +03:00
Salman Ahmed
dfa8be9173 Add beatmap availability change state & event methods 2021-01-03 05:48:49 +03:00
Salman Ahmed
09e5e2629a Add user beatmap availability property 2021-01-03 05:48:49 +03:00
Bartłomiej Dach
9ab1091281
Merge branch 'master' into fix-signalr-reconnect 2021-01-02 13:18:02 +01:00