mirror of
https://github.com/matrix-org/matrix-rust-sdk.git
synced 2026-05-16 03:55:42 -04:00
* crypto: implement more primitives for the MemoryStore to work in tests * crypto: change the shape of the `CryptoStoreLock` API In particular: - make the lock work across multiple threads of the same process trying to acquire it, using `num_holders`. - add a mechanism to get the lock only once (for the NSE process, in case the main app had acquired the lock before). * client: add a cross-process crypto store lock, enable it with `Encryption::enable_cross_process_store_lock` * client: make `preshare_room_key` a critical section of the cross-process lock * sliding sync: make it possible to define different timeouts for a `SlidingSyncInstance` This will be handy for the NSE process on iOS, which has very little time to wait for the proxy's responses. * feat: implement the `EncryptionSync` API (renamed from `Notification` API) * fixup! client: add a cross-process crypto store lock, enable it with `Encryption::enable_cross_process_store_lock` * feat: allow disabling e2ee / to-device in the RoomList API * feat: use same SS id for main/NSE process, reload to-device token from disk before each encryption sync * fix: better error handling if restoring the to-device token failed * feat: add logs for the locking functions * test: add a few tests for encryption sync * feat: add `reload_caches` method in the `EncryptionSync` + FFI bindings * chore: clean up FFI loop * encryption sync: Remove unused errors, specialize some errors * feat: include termination reason in the encryption sync loop * feat: add more logs * chore: fmt + clippy + doc * comment: precise only in the presence of another process * Tweak `room_list` APIs to include `_with_encryption` variants * chore: rustfmt
This crate implements the base to build a Matrix client library.
Crate Feature Flags
The following crate feature flags are available:
encryption: Enables end-to-end encryption support in the library.qrcode: Enables QRcode generation and reading code.testing: Provides facilities and functions for tests, in particular for integration testing store implementations. ATTENTION: do not ever use outside of tests, we do not provide any stability warantees on these, these are merely helpers. If you find you need any function provided here outside of tests, please open a Github Issue and inform us about your use case for us to consider.