Use Saturating Math in XCM (#5845)

* saturating xcm

* Even more saturating

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
This commit is contained in:
Shawn Tabrizi
2022-08-01 11:55:51 +01:00
committed by GitHub
parent 95b2976df1
commit 8dbbf5dd5a
+12 -16
View File
@@ -417,13 +417,13 @@ pub mod pallet {
// by the destinations being most sent to.
let mut q = VersionDiscoveryQueue::<T>::take().into_inner();
// TODO: correct weights.
weight_used += T::DbWeight::get().read + T::DbWeight::get().write;
weight_used.saturating_accrue(T::DbWeight::get().reads_writes(1, 1));
q.sort_by_key(|i| i.1);
while let Some((versioned_dest, _)) = q.pop() {
if let Ok(dest) = MultiLocation::try_from(versioned_dest) {
if Self::request_version_notify(dest).is_ok() {
// TODO: correct weights.
weight_used += T::DbWeight::get().read + T::DbWeight::get().write;
weight_used.saturating_accrue(T::DbWeight::get().reads_writes(1, 1));
break
}
}
@@ -490,7 +490,7 @@ pub mod pallet {
WithdrawAsset(assets),
InitiateTeleport { assets: Wild(All), dest, xcm: Xcm(vec![]) },
]);
T::Weigher::weight(&mut message).map_or(Weight::max_value(), |w| 100_000_000 + w)
T::Weigher::weight(&mut message).map_or(Weight::max_value(), |w| 100_000_000.saturating_add(w))
},
_ => Weight::max_value(),
}
@@ -528,7 +528,7 @@ pub mod pallet {
let mut message = Xcm(vec![
TransferReserveAsset { assets, dest, xcm: Xcm(vec![]) }
]);
T::Weigher::weight(&mut message).map_or(Weight::max_value(), |w| 100_000_000 + w)
T::Weigher::weight(&mut message).map_or(Weight::max_value(), |w| 100_000_000.saturating_add(w))
},
_ => Weight::max_value(),
}
@@ -690,7 +690,7 @@ pub mod pallet {
let mut message = Xcm(vec![
TransferReserveAsset { assets, dest, xcm: Xcm(vec![]) }
]);
T::Weigher::weight(&mut message).map_or(Weight::max_value(), |w| 100_000_000 + w)
T::Weigher::weight(&mut message).map_or(Weight::max_value(), |w| 100_000_000.saturating_add(w))
},
_ => Weight::max_value(),
}
@@ -740,7 +740,7 @@ pub mod pallet {
WithdrawAsset(assets),
InitiateTeleport { assets: Wild(All), dest, xcm: Xcm(vec![]) },
]);
T::Weigher::weight(&mut message).map_or(Weight::max_value(), |w| 100_000_000 + w)
T::Weigher::weight(&mut message).map_or(Weight::max_value(), |w| 100_000_000.saturating_add(w))
},
_ => Weight::max_value(),
}
@@ -889,17 +889,13 @@ pub mod pallet {
let mut weight_used = 0;
// TODO: Correct weights for the components of this:
let todo_sv_migrate_weight: Weight = T::DbWeight::get().read + T::DbWeight::get().write;
let todo_vn_migrate_weight: Weight = T::DbWeight::get().read + T::DbWeight::get().write;
let todo_sv_migrate_weight: Weight = T::DbWeight::get().reads_writes(1, 1);
let todo_vn_migrate_weight: Weight = T::DbWeight::get().reads_writes(1, 1);
let todo_vnt_already_notified_weight: Weight = T::DbWeight::get().read;
let todo_vnt_notify_weight: Weight =
T::DbWeight::get().read + T::DbWeight::get().write * 3;
let todo_vnt_migrate_weight: Weight =
T::DbWeight::get().read + T::DbWeight::get().write;
let todo_vnt_migrate_fail_weight: Weight =
T::DbWeight::get().read + T::DbWeight::get().write;
let todo_vnt_notify_migrate_weight: Weight =
T::DbWeight::get().read + T::DbWeight::get().write * 3;
let todo_vnt_notify_weight: Weight = T::DbWeight::get().reads_writes(1, 3);
let todo_vnt_migrate_weight: Weight = T::DbWeight::get().reads_writes(1, 1);
let todo_vnt_migrate_fail_weight: Weight = T::DbWeight::get().reads_writes(1, 1);
let todo_vnt_notify_migrate_weight: Weight = T::DbWeight::get().reads_writes(1, 3);
use VersionMigrationStage::*;