Migration implementation (part 1)
This commit is contained in:
@@ -68,7 +68,7 @@ pub struct Message {
|
||||
pub priority: i16,
|
||||
|
||||
pub size: u64,
|
||||
pub quota_keys: Vec<QuotaKey>,
|
||||
pub quota_keys: Box<[QuotaKey]>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||
@@ -91,8 +91,8 @@ pub struct MessageWrapper {
|
||||
serde::Deserialize,
|
||||
)]
|
||||
pub enum QuotaKey {
|
||||
Size { key: Vec<u8>, id: u64 },
|
||||
Count { key: Vec<u8>, id: u64 },
|
||||
Size { key: Box<[u8]>, id: u64 },
|
||||
Count { key: Box<[u8]>, id: u64 },
|
||||
}
|
||||
|
||||
#[derive(
|
||||
|
||||
@@ -112,7 +112,7 @@ impl HasQueueQuota for Server {
|
||||
}
|
||||
}
|
||||
|
||||
message.message.quota_keys = quota_keys;
|
||||
message.message.quota_keys = quota_keys.into_boxed_slice();
|
||||
|
||||
true
|
||||
}
|
||||
@@ -147,7 +147,7 @@ impl HasQueueQuota for Server {
|
||||
return false;
|
||||
} else {
|
||||
refs.push(QuotaKey::Size {
|
||||
key: key.as_ref().to_vec(),
|
||||
key: key.as_ref().into(),
|
||||
id,
|
||||
});
|
||||
}
|
||||
@@ -167,7 +167,7 @@ impl HasQueueQuota for Server {
|
||||
return false;
|
||||
} else {
|
||||
refs.push(QuotaKey::Count {
|
||||
key: key.as_ref().to_vec(),
|
||||
key: key.as_ref().into(),
|
||||
id,
|
||||
});
|
||||
}
|
||||
@@ -202,11 +202,14 @@ impl MessageWrapper {
|
||||
for quota_key in std::mem::take(&mut self.message.quota_keys) {
|
||||
match quota_key {
|
||||
QuotaKey::Count { id, key } if quota_ids.contains(&id) => {
|
||||
batch.add(ValueClass::Queue(QueueClass::QuotaCount(key)), -1);
|
||||
batch.add(
|
||||
ValueClass::Queue(QueueClass::QuotaCount(key.into_vec())),
|
||||
-1,
|
||||
);
|
||||
}
|
||||
QuotaKey::Size { id, key } if quota_ids.contains(&id) => {
|
||||
batch.add(
|
||||
ValueClass::Queue(QueueClass::QuotaSize(key)),
|
||||
ValueClass::Queue(QueueClass::QuotaSize(key.into_vec())),
|
||||
-(self.message.size as i64),
|
||||
);
|
||||
}
|
||||
@@ -215,7 +218,7 @@ impl MessageWrapper {
|
||||
}
|
||||
}
|
||||
}
|
||||
self.message.quota_keys = quota_keys;
|
||||
self.message.quota_keys = quota_keys.into_boxed_slice();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -90,7 +90,7 @@ impl SmtpSpool for Server {
|
||||
priority: 0,
|
||||
size: 0,
|
||||
blob_hash: Default::default(),
|
||||
quota_keys: Vec::new(),
|
||||
quota_keys: Default::default(),
|
||||
received_from_ip: IpAddr::V4(Ipv4Addr::LOCALHOST),
|
||||
received_via_port: 0,
|
||||
},
|
||||
@@ -417,11 +417,11 @@ impl MessageWrapper {
|
||||
for quota_key in &self.message.quota_keys {
|
||||
match quota_key {
|
||||
QuotaKey::Count { key, .. } => {
|
||||
batch.add(ValueClass::Queue(QueueClass::QuotaCount(key.clone())), 1);
|
||||
batch.add(ValueClass::Queue(QueueClass::QuotaCount(key.to_vec())), 1);
|
||||
}
|
||||
QuotaKey::Size { key, .. } => {
|
||||
batch.add(
|
||||
ValueClass::Queue(QueueClass::QuotaSize(key.clone())),
|
||||
ValueClass::Queue(QueueClass::QuotaSize(key.to_vec())),
|
||||
self.message.size as i64,
|
||||
);
|
||||
}
|
||||
@@ -691,11 +691,11 @@ impl MessageWrapper {
|
||||
for quota_key in self.message.quota_keys {
|
||||
match quota_key {
|
||||
QuotaKey::Count { key, .. } => {
|
||||
batch.add(ValueClass::Queue(QueueClass::QuotaCount(key)), -1);
|
||||
batch.add(ValueClass::Queue(QueueClass::QuotaCount(key.to_vec())), -1);
|
||||
}
|
||||
QuotaKey::Size { key, .. } => {
|
||||
batch.add(
|
||||
ValueClass::Queue(QueueClass::QuotaSize(key)),
|
||||
ValueClass::Queue(QueueClass::QuotaSize(key.to_vec())),
|
||||
-(self.message.size as i64),
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user