Remove lots of redundant string allocations
parent
fe744c856f
commit
dbe8c2ce19
|
@ -217,7 +217,7 @@ impl Database {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn watch(&self, user_id: &UserId, device_id: &DeviceId) {
|
pub async fn watch(&self, user_id: &UserId, device_id: &DeviceId) {
|
||||||
let userid_bytes = user_id.to_string().as_bytes().to_vec();
|
let userid_bytes = user_id.as_bytes().to_vec();
|
||||||
let mut userid_prefix = userid_bytes.clone();
|
let mut userid_prefix = userid_bytes.clone();
|
||||||
userid_prefix.push(0xff);
|
userid_prefix.push(0xff);
|
||||||
|
|
||||||
|
@ -241,7 +241,7 @@ impl Database {
|
||||||
|
|
||||||
// Events for rooms we are in
|
// Events for rooms we are in
|
||||||
for room_id in self.rooms.rooms_joined(user_id).filter_map(|r| r.ok()) {
|
for room_id in self.rooms.rooms_joined(user_id).filter_map(|r| r.ok()) {
|
||||||
let roomid_bytes = room_id.to_string().as_bytes().to_vec();
|
let roomid_bytes = room_id.as_bytes().to_vec();
|
||||||
let mut roomid_prefix = roomid_bytes.clone();
|
let mut roomid_prefix = roomid_bytes.clone();
|
||||||
roomid_prefix.push(0xff);
|
roomid_prefix.push(0xff);
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ impl AccountData {
|
||||||
.as_bytes()
|
.as_bytes()
|
||||||
.to_vec();
|
.to_vec();
|
||||||
prefix.push(0xff);
|
prefix.push(0xff);
|
||||||
prefix.extend_from_slice(&user_id.to_string().as_bytes());
|
prefix.extend_from_slice(&user_id.as_bytes());
|
||||||
prefix.push(0xff);
|
prefix.push(0xff);
|
||||||
|
|
||||||
// Remove old entry
|
// Remove old entry
|
||||||
|
@ -42,7 +42,7 @@ impl AccountData {
|
||||||
let mut key = prefix;
|
let mut key = prefix;
|
||||||
key.extend_from_slice(&globals.next_count()?.to_be_bytes());
|
key.extend_from_slice(&globals.next_count()?.to_be_bytes());
|
||||||
key.push(0xff);
|
key.push(0xff);
|
||||||
key.extend_from_slice(event_type.to_string().as_bytes());
|
key.extend_from_slice(event_type.as_ref().as_bytes());
|
||||||
|
|
||||||
let json = serde_json::to_value(data).expect("all types here can be serialized"); // TODO: maybe add error handling
|
let json = serde_json::to_value(data).expect("all types here can be serialized"); // TODO: maybe add error handling
|
||||||
if json.get("type").is_none() || json.get("content").is_none() {
|
if json.get("type").is_none() || json.get("content").is_none() {
|
||||||
|
@ -89,7 +89,7 @@ impl AccountData {
|
||||||
.as_bytes()
|
.as_bytes()
|
||||||
.to_vec();
|
.to_vec();
|
||||||
prefix.push(0xff);
|
prefix.push(0xff);
|
||||||
prefix.extend_from_slice(&user_id.to_string().as_bytes());
|
prefix.extend_from_slice(&user_id.as_bytes());
|
||||||
prefix.push(0xff);
|
prefix.push(0xff);
|
||||||
|
|
||||||
// Skip the data that's exactly at since, because we sent that last time
|
// Skip the data that's exactly at since, because we sent that last time
|
||||||
|
@ -135,7 +135,7 @@ impl AccountData {
|
||||||
.as_bytes()
|
.as_bytes()
|
||||||
.to_vec();
|
.to_vec();
|
||||||
prefix.push(0xff);
|
prefix.push(0xff);
|
||||||
prefix.extend_from_slice(&user_id.to_string().as_bytes());
|
prefix.extend_from_slice(&user_id.as_bytes());
|
||||||
prefix.push(0xff);
|
prefix.push(0xff);
|
||||||
let kind = kind.clone();
|
let kind = kind.clone();
|
||||||
|
|
||||||
|
@ -148,7 +148,7 @@ impl AccountData {
|
||||||
k.rsplit(|&b| b == 0xff)
|
k.rsplit(|&b| b == 0xff)
|
||||||
.next()
|
.next()
|
||||||
.map(|current_event_type| {
|
.map(|current_event_type| {
|
||||||
current_event_type == kind.to_string().as_bytes()
|
current_event_type == kind.as_ref().as_bytes()
|
||||||
})
|
})
|
||||||
.unwrap_or(false)
|
.unwrap_or(false)
|
||||||
})
|
})
|
||||||
|
|
|
@ -24,7 +24,7 @@ impl KeyBackups {
|
||||||
) -> Result<String> {
|
) -> Result<String> {
|
||||||
let version = globals.next_count()?.to_string();
|
let version = globals.next_count()?.to_string();
|
||||||
|
|
||||||
let mut key = user_id.to_string().as_bytes().to_vec();
|
let mut key = user_id.as_bytes().to_vec();
|
||||||
key.push(0xff);
|
key.push(0xff);
|
||||||
key.extend_from_slice(&version.as_bytes());
|
key.extend_from_slice(&version.as_bytes());
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ impl KeyBackups {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn delete_backup(&self, user_id: &UserId, version: &str) -> Result<()> {
|
pub fn delete_backup(&self, user_id: &UserId, version: &str) -> Result<()> {
|
||||||
let mut key = user_id.to_string().as_bytes().to_vec();
|
let mut key = user_id.as_bytes().to_vec();
|
||||||
key.push(0xff);
|
key.push(0xff);
|
||||||
key.extend_from_slice(&version.as_bytes());
|
key.extend_from_slice(&version.as_bytes());
|
||||||
|
|
||||||
|
@ -67,7 +67,7 @@ impl KeyBackups {
|
||||||
backup_metadata: &BackupAlgorithm,
|
backup_metadata: &BackupAlgorithm,
|
||||||
globals: &super::globals::Globals,
|
globals: &super::globals::Globals,
|
||||||
) -> Result<String> {
|
) -> Result<String> {
|
||||||
let mut key = user_id.to_string().as_bytes().to_vec();
|
let mut key = user_id.as_bytes().to_vec();
|
||||||
key.push(0xff);
|
key.push(0xff);
|
||||||
key.extend_from_slice(&version.as_bytes());
|
key.extend_from_slice(&version.as_bytes());
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ impl KeyBackups {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_latest_backup(&self, user_id: &UserId) -> Result<Option<(String, BackupAlgorithm)>> {
|
pub fn get_latest_backup(&self, user_id: &UserId) -> Result<Option<(String, BackupAlgorithm)>> {
|
||||||
let mut prefix = user_id.to_string().as_bytes().to_vec();
|
let mut prefix = user_id.as_bytes().to_vec();
|
||||||
prefix.push(0xff);
|
prefix.push(0xff);
|
||||||
self.backupid_algorithm
|
self.backupid_algorithm
|
||||||
.scan_prefix(&prefix)
|
.scan_prefix(&prefix)
|
||||||
|
@ -113,7 +113,7 @@ impl KeyBackups {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_backup(&self, user_id: &UserId, version: &str) -> Result<Option<BackupAlgorithm>> {
|
pub fn get_backup(&self, user_id: &UserId, version: &str) -> Result<Option<BackupAlgorithm>> {
|
||||||
let mut key = user_id.to_string().as_bytes().to_vec();
|
let mut key = user_id.as_bytes().to_vec();
|
||||||
key.push(0xff);
|
key.push(0xff);
|
||||||
key.extend_from_slice(version.as_bytes());
|
key.extend_from_slice(version.as_bytes());
|
||||||
|
|
||||||
|
@ -132,7 +132,7 @@ impl KeyBackups {
|
||||||
key_data: &KeyBackupData,
|
key_data: &KeyBackupData,
|
||||||
globals: &super::globals::Globals,
|
globals: &super::globals::Globals,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
let mut key = user_id.to_string().as_bytes().to_vec();
|
let mut key = user_id.as_bytes().to_vec();
|
||||||
key.push(0xff);
|
key.push(0xff);
|
||||||
key.extend_from_slice(version.as_bytes());
|
key.extend_from_slice(version.as_bytes());
|
||||||
|
|
||||||
|
@ -147,7 +147,7 @@ impl KeyBackups {
|
||||||
.insert(&key, &globals.next_count()?.to_be_bytes())?;
|
.insert(&key, &globals.next_count()?.to_be_bytes())?;
|
||||||
|
|
||||||
key.push(0xff);
|
key.push(0xff);
|
||||||
key.extend_from_slice(room_id.to_string().as_bytes());
|
key.extend_from_slice(room_id.as_bytes());
|
||||||
key.push(0xff);
|
key.push(0xff);
|
||||||
key.extend_from_slice(session_id.as_bytes());
|
key.extend_from_slice(session_id.as_bytes());
|
||||||
|
|
||||||
|
@ -160,7 +160,7 @@ impl KeyBackups {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn count_keys(&self, user_id: &UserId, version: &str) -> Result<usize> {
|
pub fn count_keys(&self, user_id: &UserId, version: &str) -> Result<usize> {
|
||||||
let mut prefix = user_id.to_string().as_bytes().to_vec();
|
let mut prefix = user_id.as_bytes().to_vec();
|
||||||
prefix.push(0xff);
|
prefix.push(0xff);
|
||||||
prefix.extend_from_slice(version.as_bytes());
|
prefix.extend_from_slice(version.as_bytes());
|
||||||
|
|
||||||
|
@ -168,7 +168,7 @@ impl KeyBackups {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_etag(&self, user_id: &UserId, version: &str) -> Result<String> {
|
pub fn get_etag(&self, user_id: &UserId, version: &str) -> Result<String> {
|
||||||
let mut key = user_id.to_string().as_bytes().to_vec();
|
let mut key = user_id.as_bytes().to_vec();
|
||||||
key.push(0xff);
|
key.push(0xff);
|
||||||
key.extend_from_slice(&version.as_bytes());
|
key.extend_from_slice(&version.as_bytes());
|
||||||
|
|
||||||
|
@ -187,7 +187,7 @@ impl KeyBackups {
|
||||||
user_id: &UserId,
|
user_id: &UserId,
|
||||||
version: &str,
|
version: &str,
|
||||||
) -> Result<BTreeMap<RoomId, RoomKeyBackup>> {
|
) -> Result<BTreeMap<RoomId, RoomKeyBackup>> {
|
||||||
let mut prefix = user_id.to_string().as_bytes().to_vec();
|
let mut prefix = user_id.as_bytes().to_vec();
|
||||||
prefix.push(0xff);
|
prefix.push(0xff);
|
||||||
prefix.extend_from_slice(version.as_bytes());
|
prefix.extend_from_slice(version.as_bytes());
|
||||||
prefix.push(0xff);
|
prefix.push(0xff);
|
||||||
|
@ -240,7 +240,7 @@ impl KeyBackups {
|
||||||
version: &str,
|
version: &str,
|
||||||
room_id: &RoomId,
|
room_id: &RoomId,
|
||||||
) -> BTreeMap<String, KeyBackupData> {
|
) -> BTreeMap<String, KeyBackupData> {
|
||||||
let mut prefix = user_id.to_string().as_bytes().to_vec();
|
let mut prefix = user_id.as_bytes().to_vec();
|
||||||
prefix.push(0xff);
|
prefix.push(0xff);
|
||||||
prefix.extend_from_slice(version.as_bytes());
|
prefix.extend_from_slice(version.as_bytes());
|
||||||
prefix.push(0xff);
|
prefix.push(0xff);
|
||||||
|
@ -278,7 +278,7 @@ impl KeyBackups {
|
||||||
room_id: &RoomId,
|
room_id: &RoomId,
|
||||||
session_id: &str,
|
session_id: &str,
|
||||||
) -> Result<Option<KeyBackupData>> {
|
) -> Result<Option<KeyBackupData>> {
|
||||||
let mut key = user_id.to_string().as_bytes().to_vec();
|
let mut key = user_id.as_bytes().to_vec();
|
||||||
key.push(0xff);
|
key.push(0xff);
|
||||||
key.extend_from_slice(version.as_bytes());
|
key.extend_from_slice(version.as_bytes());
|
||||||
key.push(0xff);
|
key.push(0xff);
|
||||||
|
@ -297,7 +297,7 @@ impl KeyBackups {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn delete_all_keys(&self, user_id: &UserId, version: &str) -> Result<()> {
|
pub fn delete_all_keys(&self, user_id: &UserId, version: &str) -> Result<()> {
|
||||||
let mut key = user_id.to_string().as_bytes().to_vec();
|
let mut key = user_id.as_bytes().to_vec();
|
||||||
key.push(0xff);
|
key.push(0xff);
|
||||||
key.extend_from_slice(&version.as_bytes());
|
key.extend_from_slice(&version.as_bytes());
|
||||||
key.push(0xff);
|
key.push(0xff);
|
||||||
|
@ -320,7 +320,7 @@ impl KeyBackups {
|
||||||
version: &str,
|
version: &str,
|
||||||
room_id: &RoomId,
|
room_id: &RoomId,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
let mut key = user_id.to_string().as_bytes().to_vec();
|
let mut key = user_id.as_bytes().to_vec();
|
||||||
key.push(0xff);
|
key.push(0xff);
|
||||||
key.extend_from_slice(&version.as_bytes());
|
key.extend_from_slice(&version.as_bytes());
|
||||||
key.push(0xff);
|
key.push(0xff);
|
||||||
|
@ -346,7 +346,7 @@ impl KeyBackups {
|
||||||
room_id: &RoomId,
|
room_id: &RoomId,
|
||||||
session_id: &str,
|
session_id: &str,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
let mut key = user_id.to_string().as_bytes().to_vec();
|
let mut key = user_id.as_bytes().to_vec();
|
||||||
key.push(0xff);
|
key.push(0xff);
|
||||||
key.extend_from_slice(&version.as_bytes());
|
key.extend_from_slice(&version.as_bytes());
|
||||||
key.push(0xff);
|
key.push(0xff);
|
||||||
|
|
|
@ -151,7 +151,7 @@ impl Rooms {
|
||||||
event_type: &EventType,
|
event_type: &EventType,
|
||||||
state_key: &str,
|
state_key: &str,
|
||||||
) -> Result<Option<PduEvent>> {
|
) -> Result<Option<PduEvent>> {
|
||||||
let mut key = event_type.to_string().as_bytes().to_vec();
|
let mut key = event_type.as_ref().as_bytes().to_vec();
|
||||||
key.push(0xff);
|
key.push(0xff);
|
||||||
key.extend_from_slice(&state_key.as_bytes());
|
key.extend_from_slice(&state_key.as_bytes());
|
||||||
|
|
||||||
|
@ -416,7 +416,7 @@ impl Rooms {
|
||||||
/// Returns the pdu's id.
|
/// Returns the pdu's id.
|
||||||
pub fn get_pdu_id(&self, event_id: &EventId) -> Result<Option<IVec>> {
|
pub fn get_pdu_id(&self, event_id: &EventId) -> Result<Option<IVec>> {
|
||||||
self.eventid_pduid
|
self.eventid_pduid
|
||||||
.get(event_id.to_string().as_bytes())?
|
.get(event_id.as_bytes())?
|
||||||
.map_or(Ok(None), |pdu_id| Ok(Some(pdu_id)))
|
.map_or(Ok(None), |pdu_id| Ok(Some(pdu_id)))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -690,7 +690,7 @@ impl Rooms {
|
||||||
.split_terminator(|c: char| !c.is_alphanumeric())
|
.split_terminator(|c: char| !c.is_alphanumeric())
|
||||||
.map(str::to_lowercase)
|
.map(str::to_lowercase)
|
||||||
{
|
{
|
||||||
let mut key = pdu.room_id.to_string().as_bytes().to_vec();
|
let mut key = pdu.room_id.as_bytes().to_vec();
|
||||||
key.push(0xff);
|
key.push(0xff);
|
||||||
key.extend_from_slice(word.as_bytes());
|
key.extend_from_slice(word.as_bytes());
|
||||||
key.push(0xff);
|
key.push(0xff);
|
||||||
|
@ -1264,7 +1264,7 @@ impl Rooms {
|
||||||
room_id: &RoomId,
|
room_id: &RoomId,
|
||||||
since: u64,
|
since: u64,
|
||||||
) -> Result<impl DoubleEndedIterator<Item = Result<(IVec, PduEvent)>>> {
|
) -> Result<impl DoubleEndedIterator<Item = Result<(IVec, PduEvent)>>> {
|
||||||
let mut prefix = room_id.to_string().as_bytes().to_vec();
|
let mut prefix = room_id.as_bytes().to_vec();
|
||||||
prefix.push(0xff);
|
prefix.push(0xff);
|
||||||
|
|
||||||
// Skip the first pdu if it's exactly at since, because we sent that last time
|
// Skip the first pdu if it's exactly at since, because we sent that last time
|
||||||
|
@ -1298,7 +1298,7 @@ impl Rooms {
|
||||||
until: u64,
|
until: u64,
|
||||||
) -> impl Iterator<Item = Result<(IVec, PduEvent)>> {
|
) -> impl Iterator<Item = Result<(IVec, PduEvent)>> {
|
||||||
// Create the first part of the full pdu id
|
// Create the first part of the full pdu id
|
||||||
let mut prefix = room_id.to_string().as_bytes().to_vec();
|
let mut prefix = room_id.as_bytes().to_vec();
|
||||||
prefix.push(0xff);
|
prefix.push(0xff);
|
||||||
|
|
||||||
let mut current = prefix.clone();
|
let mut current = prefix.clone();
|
||||||
|
@ -1332,7 +1332,7 @@ impl Rooms {
|
||||||
from: u64,
|
from: u64,
|
||||||
) -> impl Iterator<Item = Result<(IVec, PduEvent)>> {
|
) -> impl Iterator<Item = Result<(IVec, PduEvent)>> {
|
||||||
// Create the first part of the full pdu id
|
// Create the first part of the full pdu id
|
||||||
let mut prefix = room_id.to_string().as_bytes().to_vec();
|
let mut prefix = room_id.as_bytes().to_vec();
|
||||||
prefix.push(0xff);
|
prefix.push(0xff);
|
||||||
|
|
||||||
let mut current = prefix.clone();
|
let mut current = prefix.clone();
|
||||||
|
@ -1883,9 +1883,9 @@ impl Rooms {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn once_joined(&self, user_id: &UserId, room_id: &RoomId) -> Result<bool> {
|
pub fn once_joined(&self, user_id: &UserId, room_id: &RoomId) -> Result<bool> {
|
||||||
let mut userroom_id = user_id.to_string().as_bytes().to_vec();
|
let mut userroom_id = user_id.as_bytes().to_vec();
|
||||||
userroom_id.push(0xff);
|
userroom_id.push(0xff);
|
||||||
userroom_id.extend_from_slice(room_id.to_string().as_bytes());
|
userroom_id.extend_from_slice(room_id.as_bytes());
|
||||||
|
|
||||||
Ok(self.roomuseroncejoinedids.get(userroom_id)?.is_some())
|
Ok(self.roomuseroncejoinedids.get(userroom_id)?.is_some())
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,7 +34,7 @@ impl RoomEdus {
|
||||||
event: EduEvent,
|
event: EduEvent,
|
||||||
globals: &super::super::globals::Globals,
|
globals: &super::super::globals::Globals,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
let mut prefix = room_id.to_string().as_bytes().to_vec();
|
let mut prefix = room_id.as_bytes().to_vec();
|
||||||
prefix.push(0xff);
|
prefix.push(0xff);
|
||||||
|
|
||||||
// Remove old entry
|
// Remove old entry
|
||||||
|
@ -49,7 +49,7 @@ impl RoomEdus {
|
||||||
key.rsplit(|&b| b == 0xff)
|
key.rsplit(|&b| b == 0xff)
|
||||||
.next()
|
.next()
|
||||||
.expect("rsplit always returns an element")
|
.expect("rsplit always returns an element")
|
||||||
== user_id.to_string().as_bytes()
|
== user_id.as_bytes()
|
||||||
})
|
})
|
||||||
{
|
{
|
||||||
// This is the old room_latest
|
// This is the old room_latest
|
||||||
|
@ -59,7 +59,7 @@ impl RoomEdus {
|
||||||
let mut room_latest_id = prefix;
|
let mut room_latest_id = prefix;
|
||||||
room_latest_id.extend_from_slice(&globals.next_count()?.to_be_bytes());
|
room_latest_id.extend_from_slice(&globals.next_count()?.to_be_bytes());
|
||||||
room_latest_id.push(0xff);
|
room_latest_id.push(0xff);
|
||||||
room_latest_id.extend_from_slice(&user_id.to_string().as_bytes());
|
room_latest_id.extend_from_slice(&user_id.as_bytes());
|
||||||
|
|
||||||
self.readreceiptid_readreceipt.insert(
|
self.readreceiptid_readreceipt.insert(
|
||||||
room_latest_id,
|
room_latest_id,
|
||||||
|
@ -76,7 +76,7 @@ impl RoomEdus {
|
||||||
room_id: &RoomId,
|
room_id: &RoomId,
|
||||||
since: u64,
|
since: u64,
|
||||||
) -> Result<impl Iterator<Item = Result<Raw<ruma::events::AnySyncEphemeralRoomEvent>>>> {
|
) -> Result<impl Iterator<Item = Result<Raw<ruma::events::AnySyncEphemeralRoomEvent>>>> {
|
||||||
let mut prefix = room_id.to_string().as_bytes().to_vec();
|
let mut prefix = room_id.as_bytes().to_vec();
|
||||||
prefix.push(0xff);
|
prefix.push(0xff);
|
||||||
|
|
||||||
let mut first_possible_edu = prefix.clone();
|
let mut first_possible_edu = prefix.clone();
|
||||||
|
@ -102,9 +102,9 @@ impl RoomEdus {
|
||||||
count: u64,
|
count: u64,
|
||||||
globals: &super::super::globals::Globals,
|
globals: &super::super::globals::Globals,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
let mut key = room_id.to_string().as_bytes().to_vec();
|
let mut key = room_id.as_bytes().to_vec();
|
||||||
key.push(0xff);
|
key.push(0xff);
|
||||||
key.extend_from_slice(&user_id.to_string().as_bytes());
|
key.extend_from_slice(&user_id.as_bytes());
|
||||||
|
|
||||||
self.roomuserid_privateread
|
self.roomuserid_privateread
|
||||||
.insert(&key, &count.to_be_bytes())?;
|
.insert(&key, &count.to_be_bytes())?;
|
||||||
|
@ -118,9 +118,9 @@ impl RoomEdus {
|
||||||
/// Returns the private read marker.
|
/// Returns the private read marker.
|
||||||
#[tracing::instrument(skip(self))]
|
#[tracing::instrument(skip(self))]
|
||||||
pub fn private_read_get(&self, room_id: &RoomId, user_id: &UserId) -> Result<Option<u64>> {
|
pub fn private_read_get(&self, room_id: &RoomId, user_id: &UserId) -> Result<Option<u64>> {
|
||||||
let mut key = room_id.to_string().as_bytes().to_vec();
|
let mut key = room_id.as_bytes().to_vec();
|
||||||
key.push(0xff);
|
key.push(0xff);
|
||||||
key.extend_from_slice(&user_id.to_string().as_bytes());
|
key.extend_from_slice(&user_id.as_bytes());
|
||||||
|
|
||||||
self.roomuserid_privateread.get(key)?.map_or(Ok(None), |v| {
|
self.roomuserid_privateread.get(key)?.map_or(Ok(None), |v| {
|
||||||
Ok(Some(utils::u64_from_bytes(&v).map_err(|_| {
|
Ok(Some(utils::u64_from_bytes(&v).map_err(|_| {
|
||||||
|
@ -131,9 +131,9 @@ impl RoomEdus {
|
||||||
|
|
||||||
/// Returns the count of the last typing update in this room.
|
/// Returns the count of the last typing update in this room.
|
||||||
pub fn last_privateread_update(&self, user_id: &UserId, room_id: &RoomId) -> Result<u64> {
|
pub fn last_privateread_update(&self, user_id: &UserId, room_id: &RoomId) -> Result<u64> {
|
||||||
let mut key = room_id.to_string().as_bytes().to_vec();
|
let mut key = room_id.as_bytes().to_vec();
|
||||||
key.push(0xff);
|
key.push(0xff);
|
||||||
key.extend_from_slice(&user_id.to_string().as_bytes());
|
key.extend_from_slice(&user_id.as_bytes());
|
||||||
|
|
||||||
Ok(self
|
Ok(self
|
||||||
.roomuserid_lastprivatereadupdate
|
.roomuserid_lastprivatereadupdate
|
||||||
|
@ -155,7 +155,7 @@ impl RoomEdus {
|
||||||
timeout: u64,
|
timeout: u64,
|
||||||
globals: &super::super::globals::Globals,
|
globals: &super::super::globals::Globals,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
let mut prefix = room_id.to_string().as_bytes().to_vec();
|
let mut prefix = room_id.as_bytes().to_vec();
|
||||||
prefix.push(0xff);
|
prefix.push(0xff);
|
||||||
|
|
||||||
let count = globals.next_count()?.to_be_bytes();
|
let count = globals.next_count()?.to_be_bytes();
|
||||||
|
@ -166,10 +166,10 @@ impl RoomEdus {
|
||||||
room_typing_id.extend_from_slice(&count);
|
room_typing_id.extend_from_slice(&count);
|
||||||
|
|
||||||
self.typingid_userid
|
self.typingid_userid
|
||||||
.insert(&room_typing_id, &*user_id.to_string().as_bytes())?;
|
.insert(&room_typing_id, &*user_id.as_bytes())?;
|
||||||
|
|
||||||
self.roomid_lasttypingupdate
|
self.roomid_lasttypingupdate
|
||||||
.insert(&room_id.to_string().as_bytes(), &count)?;
|
.insert(&room_id.as_bytes(), &count)?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
@ -181,7 +181,7 @@ impl RoomEdus {
|
||||||
room_id: &RoomId,
|
room_id: &RoomId,
|
||||||
globals: &super::super::globals::Globals,
|
globals: &super::super::globals::Globals,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
let mut prefix = room_id.to_string().as_bytes().to_vec();
|
let mut prefix = room_id.as_bytes().to_vec();
|
||||||
prefix.push(0xff);
|
prefix.push(0xff);
|
||||||
|
|
||||||
let user_id = user_id.to_string();
|
let user_id = user_id.to_string();
|
||||||
|
@ -200,10 +200,8 @@ impl RoomEdus {
|
||||||
}
|
}
|
||||||
|
|
||||||
if found_outdated {
|
if found_outdated {
|
||||||
self.roomid_lasttypingupdate.insert(
|
self.roomid_lasttypingupdate
|
||||||
&room_id.to_string().as_bytes(),
|
.insert(&room_id.as_bytes(), &globals.next_count()?.to_be_bytes())?;
|
||||||
&globals.next_count()?.to_be_bytes(),
|
|
||||||
)?;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
@ -215,7 +213,7 @@ impl RoomEdus {
|
||||||
room_id: &RoomId,
|
room_id: &RoomId,
|
||||||
globals: &super::super::globals::Globals,
|
globals: &super::super::globals::Globals,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
let mut prefix = room_id.to_string().as_bytes().to_vec();
|
let mut prefix = room_id.as_bytes().to_vec();
|
||||||
prefix.push(0xff);
|
prefix.push(0xff);
|
||||||
|
|
||||||
let current_timestamp = utils::millis_since_unix_epoch();
|
let current_timestamp = utils::millis_since_unix_epoch();
|
||||||
|
@ -248,10 +246,8 @@ impl RoomEdus {
|
||||||
}
|
}
|
||||||
|
|
||||||
if found_outdated {
|
if found_outdated {
|
||||||
self.roomid_lasttypingupdate.insert(
|
self.roomid_lasttypingupdate
|
||||||
&room_id.to_string().as_bytes(),
|
.insert(&room_id.as_bytes(), &globals.next_count()?.to_be_bytes())?;
|
||||||
&globals.next_count()?.to_be_bytes(),
|
|
||||||
)?;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
@ -268,7 +264,7 @@ impl RoomEdus {
|
||||||
|
|
||||||
Ok(self
|
Ok(self
|
||||||
.roomid_lasttypingupdate
|
.roomid_lasttypingupdate
|
||||||
.get(&room_id.to_string().as_bytes())?
|
.get(&room_id.as_bytes())?
|
||||||
.map_or(Ok::<_, Error>(None), |bytes| {
|
.map_or(Ok::<_, Error>(None), |bytes| {
|
||||||
Ok(Some(utils::u64_from_bytes(&bytes).map_err(|_| {
|
Ok(Some(utils::u64_from_bytes(&bytes).map_err(|_| {
|
||||||
Error::bad_database("Count in roomid_lastroomactiveupdate is invalid.")
|
Error::bad_database("Count in roomid_lastroomactiveupdate is invalid.")
|
||||||
|
@ -281,7 +277,7 @@ impl RoomEdus {
|
||||||
&self,
|
&self,
|
||||||
room_id: &RoomId,
|
room_id: &RoomId,
|
||||||
) -> Result<SyncEphemeralRoomEvent<ruma::events::typing::TypingEventContent>> {
|
) -> Result<SyncEphemeralRoomEvent<ruma::events::typing::TypingEventContent>> {
|
||||||
let mut prefix = room_id.to_string().as_bytes().to_vec();
|
let mut prefix = room_id.as_bytes().to_vec();
|
||||||
prefix.push(0xff);
|
prefix.push(0xff);
|
||||||
|
|
||||||
let mut user_ids = Vec::new();
|
let mut user_ids = Vec::new();
|
||||||
|
@ -322,11 +318,11 @@ impl RoomEdus {
|
||||||
|
|
||||||
let count = globals.next_count()?.to_be_bytes();
|
let count = globals.next_count()?.to_be_bytes();
|
||||||
|
|
||||||
let mut presence_id = room_id.to_string().as_bytes().to_vec();
|
let mut presence_id = room_id.as_bytes().to_vec();
|
||||||
presence_id.push(0xff);
|
presence_id.push(0xff);
|
||||||
presence_id.extend_from_slice(&count);
|
presence_id.extend_from_slice(&count);
|
||||||
presence_id.push(0xff);
|
presence_id.push(0xff);
|
||||||
presence_id.extend_from_slice(&presence.sender.to_string().as_bytes());
|
presence_id.extend_from_slice(&presence.sender.as_bytes());
|
||||||
|
|
||||||
self.presenceid_presence.insert(
|
self.presenceid_presence.insert(
|
||||||
presence_id,
|
presence_id,
|
||||||
|
@ -334,7 +330,7 @@ impl RoomEdus {
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
self.userid_lastpresenceupdate.insert(
|
self.userid_lastpresenceupdate.insert(
|
||||||
&user_id.to_string().as_bytes(),
|
&user_id.as_bytes(),
|
||||||
&utils::millis_since_unix_epoch().to_be_bytes(),
|
&utils::millis_since_unix_epoch().to_be_bytes(),
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
|
@ -345,7 +341,7 @@ impl RoomEdus {
|
||||||
#[tracing::instrument(skip(self))]
|
#[tracing::instrument(skip(self))]
|
||||||
pub fn ping_presence(&self, user_id: &UserId) -> Result<()> {
|
pub fn ping_presence(&self, user_id: &UserId) -> Result<()> {
|
||||||
self.userid_lastpresenceupdate.insert(
|
self.userid_lastpresenceupdate.insert(
|
||||||
&user_id.to_string().as_bytes(),
|
&user_id.as_bytes(),
|
||||||
&utils::millis_since_unix_epoch().to_be_bytes(),
|
&utils::millis_since_unix_epoch().to_be_bytes(),
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
|
@ -355,7 +351,7 @@ impl RoomEdus {
|
||||||
/// Returns the timestamp of the last presence update of this user in millis since the unix epoch.
|
/// Returns the timestamp of the last presence update of this user in millis since the unix epoch.
|
||||||
pub fn last_presence_update(&self, user_id: &UserId) -> Result<Option<u64>> {
|
pub fn last_presence_update(&self, user_id: &UserId) -> Result<Option<u64>> {
|
||||||
self.userid_lastpresenceupdate
|
self.userid_lastpresenceupdate
|
||||||
.get(&user_id.to_string().as_bytes())?
|
.get(&user_id.as_bytes())?
|
||||||
.map(|bytes| {
|
.map(|bytes| {
|
||||||
utils::u64_from_bytes(&bytes).map_err(|_| {
|
utils::u64_from_bytes(&bytes).map_err(|_| {
|
||||||
Error::bad_database("Invalid timestamp in userid_lastpresenceupdate.")
|
Error::bad_database("Invalid timestamp in userid_lastpresenceupdate.")
|
||||||
|
@ -398,7 +394,7 @@ impl RoomEdus {
|
||||||
.try_into()
|
.try_into()
|
||||||
.map_err(|_| Error::bad_database("Invalid UserId in userid_lastpresenceupdate."))?;
|
.map_err(|_| Error::bad_database("Invalid UserId in userid_lastpresenceupdate."))?;
|
||||||
for room_id in rooms.rooms_joined(&user_id).filter_map(|r| r.ok()) {
|
for room_id in rooms.rooms_joined(&user_id).filter_map(|r| r.ok()) {
|
||||||
let mut presence_id = room_id.to_string().as_bytes().to_vec();
|
let mut presence_id = room_id.as_bytes().to_vec();
|
||||||
presence_id.push(0xff);
|
presence_id.push(0xff);
|
||||||
presence_id.extend_from_slice(&count);
|
presence_id.extend_from_slice(&count);
|
||||||
presence_id.push(0xff);
|
presence_id.push(0xff);
|
||||||
|
@ -424,7 +420,7 @@ impl RoomEdus {
|
||||||
}
|
}
|
||||||
|
|
||||||
self.userid_lastpresenceupdate.insert(
|
self.userid_lastpresenceupdate.insert(
|
||||||
&user_id.to_string().as_bytes(),
|
&user_id.as_bytes(),
|
||||||
&utils::millis_since_unix_epoch().to_be_bytes(),
|
&utils::millis_since_unix_epoch().to_be_bytes(),
|
||||||
)?;
|
)?;
|
||||||
}
|
}
|
||||||
|
@ -443,7 +439,7 @@ impl RoomEdus {
|
||||||
) -> Result<HashMap<UserId, PresenceEvent>> {
|
) -> Result<HashMap<UserId, PresenceEvent>> {
|
||||||
self.presence_maintain(rooms, globals)?;
|
self.presence_maintain(rooms, globals)?;
|
||||||
|
|
||||||
let mut prefix = room_id.to_string().as_bytes().to_vec();
|
let mut prefix = room_id.as_bytes().to_vec();
|
||||||
prefix.push(0xff);
|
prefix.push(0xff);
|
||||||
|
|
||||||
let mut first_possible_edu = prefix.clone();
|
let mut first_possible_edu = prefix.clone();
|
||||||
|
|
|
@ -148,7 +148,7 @@ impl Uiaa {
|
||||||
device_id: &DeviceId,
|
device_id: &DeviceId,
|
||||||
uiaainfo: Option<&UiaaInfo>,
|
uiaainfo: Option<&UiaaInfo>,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
let mut userdeviceid = user_id.to_string().as_bytes().to_vec();
|
let mut userdeviceid = user_id.as_bytes().to_vec();
|
||||||
userdeviceid.push(0xff);
|
userdeviceid.push(0xff);
|
||||||
userdeviceid.extend_from_slice(device_id.as_bytes());
|
userdeviceid.extend_from_slice(device_id.as_bytes());
|
||||||
|
|
||||||
|
@ -170,7 +170,7 @@ impl Uiaa {
|
||||||
device_id: &DeviceId,
|
device_id: &DeviceId,
|
||||||
session: &str,
|
session: &str,
|
||||||
) -> Result<UiaaInfo> {
|
) -> Result<UiaaInfo> {
|
||||||
let mut userdeviceid = user_id.to_string().as_bytes().to_vec();
|
let mut userdeviceid = user_id.as_bytes().to_vec();
|
||||||
userdeviceid.push(0xff);
|
userdeviceid.push(0xff);
|
||||||
userdeviceid.extend_from_slice(device_id.as_bytes());
|
userdeviceid.extend_from_slice(device_id.as_bytes());
|
||||||
|
|
||||||
|
|
|
@ -185,7 +185,7 @@ impl Users {
|
||||||
// This method should never be called for nonexistent users.
|
// This method should never be called for nonexistent users.
|
||||||
assert!(self.exists(user_id)?);
|
assert!(self.exists(user_id)?);
|
||||||
|
|
||||||
let mut userdeviceid = user_id.to_string().as_bytes().to_vec();
|
let mut userdeviceid = user_id.as_bytes().to_vec();
|
||||||
userdeviceid.push(0xff);
|
userdeviceid.push(0xff);
|
||||||
userdeviceid.extend_from_slice(device_id.as_bytes());
|
userdeviceid.extend_from_slice(device_id.as_bytes());
|
||||||
|
|
||||||
|
@ -208,7 +208,7 @@ impl Users {
|
||||||
|
|
||||||
/// Removes a device from a user.
|
/// Removes a device from a user.
|
||||||
pub fn remove_device(&self, user_id: &UserId, device_id: &DeviceId) -> Result<()> {
|
pub fn remove_device(&self, user_id: &UserId, device_id: &DeviceId) -> Result<()> {
|
||||||
let mut userdeviceid = user_id.to_string().as_bytes().to_vec();
|
let mut userdeviceid = user_id.as_bytes().to_vec();
|
||||||
userdeviceid.push(0xff);
|
userdeviceid.push(0xff);
|
||||||
userdeviceid.extend_from_slice(device_id.as_bytes());
|
userdeviceid.extend_from_slice(device_id.as_bytes());
|
||||||
|
|
||||||
|
@ -234,7 +234,7 @@ impl Users {
|
||||||
|
|
||||||
/// Returns an iterator over all device ids of this user.
|
/// Returns an iterator over all device ids of this user.
|
||||||
pub fn all_device_ids(&self, user_id: &UserId) -> impl Iterator<Item = Result<Box<DeviceId>>> {
|
pub fn all_device_ids(&self, user_id: &UserId) -> impl Iterator<Item = Result<Box<DeviceId>>> {
|
||||||
let mut prefix = user_id.to_string().as_bytes().to_vec();
|
let mut prefix = user_id.as_bytes().to_vec();
|
||||||
prefix.push(0xff);
|
prefix.push(0xff);
|
||||||
// All devices have metadata
|
// All devices have metadata
|
||||||
self.userdeviceid_metadata
|
self.userdeviceid_metadata
|
||||||
|
@ -254,7 +254,7 @@ impl Users {
|
||||||
|
|
||||||
/// Replaces the access token of one device.
|
/// Replaces the access token of one device.
|
||||||
pub fn set_token(&self, user_id: &UserId, device_id: &DeviceId, token: &str) -> Result<()> {
|
pub fn set_token(&self, user_id: &UserId, device_id: &DeviceId, token: &str) -> Result<()> {
|
||||||
let mut userdeviceid = user_id.to_string().as_bytes().to_vec();
|
let mut userdeviceid = user_id.as_bytes().to_vec();
|
||||||
userdeviceid.push(0xff);
|
userdeviceid.push(0xff);
|
||||||
userdeviceid.extend_from_slice(device_id.as_bytes());
|
userdeviceid.extend_from_slice(device_id.as_bytes());
|
||||||
|
|
||||||
|
@ -282,7 +282,7 @@ impl Users {
|
||||||
one_time_key_value: &OneTimeKey,
|
one_time_key_value: &OneTimeKey,
|
||||||
globals: &super::globals::Globals,
|
globals: &super::globals::Globals,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
let mut key = user_id.to_string().as_bytes().to_vec();
|
let mut key = user_id.as_bytes().to_vec();
|
||||||
key.push(0xff);
|
key.push(0xff);
|
||||||
key.extend_from_slice(device_id.as_bytes());
|
key.extend_from_slice(device_id.as_bytes());
|
||||||
|
|
||||||
|
@ -305,10 +305,8 @@ impl Users {
|
||||||
.expect("OneTimeKey::to_string always works"),
|
.expect("OneTimeKey::to_string always works"),
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
self.userid_lastonetimekeyupdate.insert(
|
self.userid_lastonetimekeyupdate
|
||||||
&user_id.to_string().as_bytes(),
|
.insert(&user_id.as_bytes(), &globals.next_count()?.to_be_bytes())?;
|
||||||
&globals.next_count()?.to_be_bytes(),
|
|
||||||
)?;
|
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
@ -316,7 +314,7 @@ impl Users {
|
||||||
#[tracing::instrument(skip(self))]
|
#[tracing::instrument(skip(self))]
|
||||||
pub fn last_one_time_keys_update(&self, user_id: &UserId) -> Result<u64> {
|
pub fn last_one_time_keys_update(&self, user_id: &UserId) -> Result<u64> {
|
||||||
self.userid_lastonetimekeyupdate
|
self.userid_lastonetimekeyupdate
|
||||||
.get(&user_id.to_string().as_bytes())?
|
.get(&user_id.as_bytes())?
|
||||||
.map(|bytes| {
|
.map(|bytes| {
|
||||||
utils::u64_from_bytes(&bytes).map_err(|_| {
|
utils::u64_from_bytes(&bytes).map_err(|_| {
|
||||||
Error::bad_database("Count in roomid_lastroomactiveupdate is invalid.")
|
Error::bad_database("Count in roomid_lastroomactiveupdate is invalid.")
|
||||||
|
@ -332,18 +330,16 @@ impl Users {
|
||||||
key_algorithm: &DeviceKeyAlgorithm,
|
key_algorithm: &DeviceKeyAlgorithm,
|
||||||
globals: &super::globals::Globals,
|
globals: &super::globals::Globals,
|
||||||
) -> Result<Option<(DeviceKeyId, OneTimeKey)>> {
|
) -> Result<Option<(DeviceKeyId, OneTimeKey)>> {
|
||||||
let mut prefix = user_id.to_string().as_bytes().to_vec();
|
let mut prefix = user_id.as_bytes().to_vec();
|
||||||
prefix.push(0xff);
|
prefix.push(0xff);
|
||||||
prefix.extend_from_slice(device_id.as_bytes());
|
prefix.extend_from_slice(device_id.as_bytes());
|
||||||
prefix.push(0xff);
|
prefix.push(0xff);
|
||||||
prefix.push(b'"'); // Annoying quotation mark
|
prefix.push(b'"'); // Annoying quotation mark
|
||||||
prefix.extend_from_slice(key_algorithm.to_string().as_bytes());
|
prefix.extend_from_slice(key_algorithm.as_ref().as_bytes());
|
||||||
prefix.push(b':');
|
prefix.push(b':');
|
||||||
|
|
||||||
self.userid_lastonetimekeyupdate.insert(
|
self.userid_lastonetimekeyupdate
|
||||||
&user_id.to_string().as_bytes(),
|
.insert(&user_id.as_bytes(), &globals.next_count()?.to_be_bytes())?;
|
||||||
&globals.next_count()?.to_be_bytes(),
|
|
||||||
)?;
|
|
||||||
|
|
||||||
self.onetimekeyid_onetimekeys
|
self.onetimekeyid_onetimekeys
|
||||||
.scan_prefix(&prefix)
|
.scan_prefix(&prefix)
|
||||||
|
@ -373,7 +369,7 @@ impl Users {
|
||||||
user_id: &UserId,
|
user_id: &UserId,
|
||||||
device_id: &DeviceId,
|
device_id: &DeviceId,
|
||||||
) -> Result<BTreeMap<DeviceKeyAlgorithm, UInt>> {
|
) -> Result<BTreeMap<DeviceKeyAlgorithm, UInt>> {
|
||||||
let mut userdeviceid = user_id.to_string().as_bytes().to_vec();
|
let mut userdeviceid = user_id.as_bytes().to_vec();
|
||||||
userdeviceid.push(0xff);
|
userdeviceid.push(0xff);
|
||||||
userdeviceid.extend_from_slice(device_id.as_bytes());
|
userdeviceid.extend_from_slice(device_id.as_bytes());
|
||||||
|
|
||||||
|
@ -409,7 +405,7 @@ impl Users {
|
||||||
rooms: &super::rooms::Rooms,
|
rooms: &super::rooms::Rooms,
|
||||||
globals: &super::globals::Globals,
|
globals: &super::globals::Globals,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
let mut userdeviceid = user_id.to_string().as_bytes().to_vec();
|
let mut userdeviceid = user_id.as_bytes().to_vec();
|
||||||
userdeviceid.push(0xff);
|
userdeviceid.push(0xff);
|
||||||
userdeviceid.extend_from_slice(device_id.as_bytes());
|
userdeviceid.extend_from_slice(device_id.as_bytes());
|
||||||
|
|
||||||
|
@ -434,7 +430,7 @@ impl Users {
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
// TODO: Check signatures
|
// TODO: Check signatures
|
||||||
|
|
||||||
let mut prefix = user_id.to_string().as_bytes().to_vec();
|
let mut prefix = user_id.as_bytes().to_vec();
|
||||||
prefix.push(0xff);
|
prefix.push(0xff);
|
||||||
|
|
||||||
// Master key
|
// Master key
|
||||||
|
@ -532,9 +528,9 @@ impl Users {
|
||||||
rooms: &super::rooms::Rooms,
|
rooms: &super::rooms::Rooms,
|
||||||
globals: &super::globals::Globals,
|
globals: &super::globals::Globals,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
let mut key = target_id.to_string().as_bytes().to_vec();
|
let mut key = target_id.as_bytes().to_vec();
|
||||||
key.push(0xff);
|
key.push(0xff);
|
||||||
key.extend_from_slice(key_id.to_string().as_bytes());
|
key.extend_from_slice(key_id.as_bytes());
|
||||||
|
|
||||||
let mut cross_signing_key =
|
let mut cross_signing_key =
|
||||||
serde_json::from_slice::<serde_json::Value>(&self.keyid_key.get(&key)?.ok_or(
|
serde_json::from_slice::<serde_json::Value>(&self.keyid_key.get(&key)?.ok_or(
|
||||||
|
@ -617,14 +613,14 @@ impl Users {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut key = room_id.to_string().as_bytes().to_vec();
|
let mut key = room_id.as_bytes().to_vec();
|
||||||
key.push(0xff);
|
key.push(0xff);
|
||||||
key.extend_from_slice(&count);
|
key.extend_from_slice(&count);
|
||||||
|
|
||||||
self.keychangeid_userid.insert(key, &*user_id.to_string())?;
|
self.keychangeid_userid.insert(key, &*user_id.to_string())?;
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut key = user_id.to_string().as_bytes().to_vec();
|
let mut key = user_id.as_bytes().to_vec();
|
||||||
key.push(0xff);
|
key.push(0xff);
|
||||||
key.extend_from_slice(&count);
|
key.extend_from_slice(&count);
|
||||||
self.keychangeid_userid.insert(key, &*user_id.to_string())?;
|
self.keychangeid_userid.insert(key, &*user_id.to_string())?;
|
||||||
|
@ -637,7 +633,7 @@ impl Users {
|
||||||
user_id: &UserId,
|
user_id: &UserId,
|
||||||
device_id: &DeviceId,
|
device_id: &DeviceId,
|
||||||
) -> Result<Option<DeviceKeys>> {
|
) -> Result<Option<DeviceKeys>> {
|
||||||
let mut key = user_id.to_string().as_bytes().to_vec();
|
let mut key = user_id.as_bytes().to_vec();
|
||||||
key.push(0xff);
|
key.push(0xff);
|
||||||
key.extend_from_slice(device_id.as_bytes());
|
key.extend_from_slice(device_id.as_bytes());
|
||||||
|
|
||||||
|
@ -724,7 +720,7 @@ impl Users {
|
||||||
content: serde_json::Value,
|
content: serde_json::Value,
|
||||||
globals: &super::globals::Globals,
|
globals: &super::globals::Globals,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
let mut key = target_user_id.to_string().as_bytes().to_vec();
|
let mut key = target_user_id.as_bytes().to_vec();
|
||||||
key.push(0xff);
|
key.push(0xff);
|
||||||
key.extend_from_slice(target_device_id.as_bytes());
|
key.extend_from_slice(target_device_id.as_bytes());
|
||||||
key.push(0xff);
|
key.push(0xff);
|
||||||
|
@ -751,7 +747,7 @@ impl Users {
|
||||||
) -> Result<Vec<Raw<AnyToDeviceEvent>>> {
|
) -> Result<Vec<Raw<AnyToDeviceEvent>>> {
|
||||||
let mut events = Vec::new();
|
let mut events = Vec::new();
|
||||||
|
|
||||||
let mut prefix = user_id.to_string().as_bytes().to_vec();
|
let mut prefix = user_id.as_bytes().to_vec();
|
||||||
prefix.push(0xff);
|
prefix.push(0xff);
|
||||||
prefix.extend_from_slice(device_id.as_bytes());
|
prefix.extend_from_slice(device_id.as_bytes());
|
||||||
prefix.push(0xff);
|
prefix.push(0xff);
|
||||||
|
@ -773,7 +769,7 @@ impl Users {
|
||||||
device_id: &DeviceId,
|
device_id: &DeviceId,
|
||||||
until: u64,
|
until: u64,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
let mut prefix = user_id.to_string().as_bytes().to_vec();
|
let mut prefix = user_id.as_bytes().to_vec();
|
||||||
prefix.push(0xff);
|
prefix.push(0xff);
|
||||||
prefix.extend_from_slice(device_id.as_bytes());
|
prefix.extend_from_slice(device_id.as_bytes());
|
||||||
prefix.push(0xff);
|
prefix.push(0xff);
|
||||||
|
@ -808,7 +804,7 @@ impl Users {
|
||||||
device_id: &DeviceId,
|
device_id: &DeviceId,
|
||||||
device: &Device,
|
device: &Device,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
let mut userdeviceid = user_id.to_string().as_bytes().to_vec();
|
let mut userdeviceid = user_id.as_bytes().to_vec();
|
||||||
userdeviceid.push(0xff);
|
userdeviceid.push(0xff);
|
||||||
userdeviceid.extend_from_slice(device_id.as_bytes());
|
userdeviceid.extend_from_slice(device_id.as_bytes());
|
||||||
|
|
||||||
|
@ -831,7 +827,7 @@ impl Users {
|
||||||
user_id: &UserId,
|
user_id: &UserId,
|
||||||
device_id: &DeviceId,
|
device_id: &DeviceId,
|
||||||
) -> Result<Option<Device>> {
|
) -> Result<Option<Device>> {
|
||||||
let mut userdeviceid = user_id.to_string().as_bytes().to_vec();
|
let mut userdeviceid = user_id.as_bytes().to_vec();
|
||||||
userdeviceid.push(0xff);
|
userdeviceid.push(0xff);
|
||||||
userdeviceid.extend_from_slice(device_id.as_bytes());
|
userdeviceid.extend_from_slice(device_id.as_bytes());
|
||||||
|
|
||||||
|
@ -845,7 +841,7 @@ impl Users {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn all_devices_metadata(&self, user_id: &UserId) -> impl Iterator<Item = Result<Device>> {
|
pub fn all_devices_metadata(&self, user_id: &UserId) -> impl Iterator<Item = Result<Device>> {
|
||||||
let mut key = user_id.to_string().as_bytes().to_vec();
|
let mut key = user_id.as_bytes().to_vec();
|
||||||
key.push(0xff);
|
key.push(0xff);
|
||||||
|
|
||||||
self.userdeviceid_metadata
|
self.userdeviceid_metadata
|
||||||
|
|
Loading…
Reference in New Issue