Open
Conversation
fb02fcc to
62fc2d0
Compare
62fc2d0 to
e1f73db
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
I think this is slightly better code in term of backend without changing functionality, though some improvement are still possibles.
I recommend going through the patches in commit order as all of them at once might not be readable.
The mains changes are around:
The app seems to run without issues with thoses changes.
Rooms now all inherit Baseroom for Spaces, normal Rooms, and PreviewRooms to better handle IDs.
ClientManager and MatrixClient now use the new maps for O(1) removal/addition.
This code includes the changes of #647 the fixes the NotifyingList.
NotifyingMap and NotifyingSet are pretty obvious, with the note that I consider a replacement in NotifyingMap as a removal followed by a addition.
Notifying Set is currently unused but could be used later, for example for optimizing AlertManager. (remove on list is O(n), O(1) for sets).
NotifyingSubMap allow have a map that specialize any other NotifyingMap without any copy, only aver showing element that repsonds to an condition. all operations on NotifyingSubMap is applied to the underlying NotifyingMap. This allow for zero copies of all Rooms in ClientManager and MatrixClient.