Skip to content

Commit 2a229a9

Browse files
committed
add get value using current_shares arg
1 parent 38828bd commit 2a229a9

File tree

1 file changed

+16
-0
lines changed
  • primitives/share-pool/src

1 file changed

+16
-0
lines changed

primitives/share-pool/src/lib.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,22 @@ where
6363
.saturating_to_num::<u64>()
6464
}
6565

66+
pub fn get_value_from_shares(&self, current_share: U64F64) -> u64 {
67+
let shared_value: U64F64 = self.state_ops.get_shared_value();
68+
let denominator: U64F64 = self.state_ops.get_denominator();
69+
70+
let maybe_value_per_share = shared_value.checked_div(denominator);
71+
(if let Some(value_per_share) = maybe_value_per_share {
72+
value_per_share.saturating_mul(current_share)
73+
} else {
74+
shared_value
75+
.saturating_mul(current_share)
76+
.checked_div(denominator)
77+
.unwrap_or(U64F64::saturating_from_num(0))
78+
})
79+
.saturating_to_num::<u64>()
80+
}
81+
6682
pub fn try_get_value(&self, key: &K) -> Result<u64, ()> {
6783
match self.state_ops.try_get_share(key) {
6884
Ok(_) => Ok(self.get_value(key)),

0 commit comments

Comments
 (0)