Simplified code in database::pay_workers()
This commit is contained in:
parent
d99ef0c1f9
commit
d3b2c4ce95
1 changed files with 8 additions and 9 deletions
|
|
@ -173,21 +173,20 @@ void database::pay_workers( share_type& budget )
|
||||||
|
|
||||||
const auto last_budget_time = get_dynamic_global_properties().last_budget_time;
|
const auto last_budget_time = get_dynamic_global_properties().last_budget_time;
|
||||||
const auto passed_time_ms = head_time - last_budget_time;
|
const auto passed_time_ms = head_time - last_budget_time;
|
||||||
const bool passed_time_is_a_day = ( passed_time_ms == fc::days(1) );
|
|
||||||
// the variable above is more likely false on BitShares mainnet, so do calculations below anyway
|
|
||||||
const auto passed_time_count = passed_time_ms.count();
|
const auto passed_time_count = passed_time_ms.count();
|
||||||
const auto day_count = fc::days(1).count();
|
const auto day_count = fc::days(1).count();
|
||||||
for( uint32_t i = 0; i < active_workers.size() && budget > 0; ++i )
|
for( uint32_t i = 0; i < active_workers.size() && budget > 0; ++i )
|
||||||
{
|
{
|
||||||
const worker_object& active_worker = active_workers[i];
|
const worker_object& active_worker = active_workers[i];
|
||||||
share_type requested_pay = active_worker.daily_pay;
|
share_type requested_pay = active_worker.daily_pay;
|
||||||
if( !passed_time_is_a_day )
|
|
||||||
{
|
// Note: if there is a good chance that passed_time_count == day_count,
|
||||||
fc::uint128 pay(requested_pay.value);
|
// for better performance, can avoid the 128 bit calculation by adding a check.
|
||||||
pay *= passed_time_count;
|
// Since it's not the case on BitShares mainnet, we're not using a check here.
|
||||||
pay /= day_count;
|
fc::uint128 pay(requested_pay.value);
|
||||||
requested_pay = pay.to_uint64();
|
pay *= passed_time_count;
|
||||||
}
|
pay /= day_count;
|
||||||
|
requested_pay = pay.to_uint64();
|
||||||
|
|
||||||
share_type actual_pay = std::min(budget, requested_pay);
|
share_type actual_pay = std::min(budget, requested_pay);
|
||||||
//ilog(" ==> Paying ${a} to worker ${w}", ("w", active_worker.id)("a", actual_pay));
|
//ilog(" ==> Paying ${a} to worker ${w}", ("w", active_worker.id)("a", actual_pay));
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue