Added ability to cache currency balance by peer.

This commit is contained in:
23rd 2024-10-26 19:09:37 +03:00
parent 08fda055fc
commit b23a877d7e
2 changed files with 13 additions and 0 deletions

View file

@ -74,6 +74,11 @@ uint64 Credits::balance(PeerId peerId) const {
return (it != _cachedPeerBalances.end()) ? it->second : 0; return (it != _cachedPeerBalances.end()) ? it->second : 0;
} }
uint64 Credits::balanceCurrency(PeerId peerId) const {
const auto it = _cachedPeerCurrencyBalances.find(peerId);
return (it != _cachedPeerCurrencyBalances.end()) ? it->second : 0;
}
rpl::producer<uint64> Credits::balanceValue() const { rpl::producer<uint64> Credits::balanceValue() const {
return _nonLockedBalance.value(); return _nonLockedBalance.value();
} }
@ -128,4 +133,8 @@ void Credits::apply(PeerId peerId, uint64 balance) {
_cachedPeerBalances[peerId] = balance; _cachedPeerBalances[peerId] = balance;
} }
void Credits::applyCurrency(PeerId peerId, uint64 balance) {
_cachedPeerCurrencyBalances[peerId] = balance;
}
} // namespace Data } // namespace Data

View file

@ -35,6 +35,9 @@ public:
[[nodiscard]] rpl::producer<float64> rateValue( [[nodiscard]] rpl::producer<float64> rateValue(
not_null<PeerData*> ownedBotOrChannel); not_null<PeerData*> ownedBotOrChannel);
void applyCurrency(PeerId peerId, uint64 balance);
[[nodiscard]] uint64 balanceCurrency(PeerId peerId) const;
void lock(int count); void lock(int count);
void unlock(int count); void unlock(int count);
void withdrawLocked(int count); void withdrawLocked(int count);
@ -50,6 +53,7 @@ private:
std::unique_ptr<Api::CreditsStatus> _loader; std::unique_ptr<Api::CreditsStatus> _loader;
base::flat_map<PeerId, uint64> _cachedPeerBalances; base::flat_map<PeerId, uint64> _cachedPeerBalances;
base::flat_map<PeerId, uint64> _cachedPeerCurrencyBalances;
uint64 _balance = 0; uint64 _balance = 0;
uint64 _locked = 0; uint64 _locked = 0;