Scorum
process_bets_resolving.cpp
Go to the documentation of this file.
4 
10 
12 
13 #include <scorum/utils/algorithm/foreach_mut.hpp>
14 
15 namespace scorum {
16 namespace chain {
17 namespace database_ns {
18 
20  betting_resolver_i& resolver,
24  : _betting_svc(betting_svc)
25  , _resolver(resolver)
26  , _vop_emitter(vop_emitter)
27  , _game_dba(game_dba)
28  , _dprop_dba(dprop_dba)
29 {
30 }
31 
33 {
34  using namespace dba;
35 
36  debug_log(ctx.get_block_info(), "process_bets_resolving BEGIN");
37 
38  auto head_time = _dprop_dba.get().time;
39  auto games = _game_dba.get_range_by<by_bets_resolve_time>(unbounded, _x <= std::make_tuple(head_time, ALL_IDS));
40 
41  utils::foreach_mut(games, [&](const game_object& game) {
42 
43  auto uuid = game.uuid;
44  auto old_status = game.status;
45 
46  fc::flat_set<wincase_type> results(game.results.begin(), game.results.end());
47 
48  _resolver.resolve_matched_bets(uuid, results);
49  _betting_svc.cancel_pending_bets(uuid);
50  _betting_svc.cancel_game(uuid);
51 
52  _vop_emitter.push_virtual_operation(game_status_changed_operation(uuid, old_status, game_status::resolved));
53  });
54 
55  debug_log(ctx.get_block_info(), "process_bets_resolving END");
56 }
57 }
58 }
59 }
fc::shared_flat_set< wincase_type > results
Definition: game_object.hpp:61
#define debug_log(CTX, FORMAT,...)
Definition: debug_log.hpp:3
const param_placeholder _x
Definition: asset.cpp:15
#define ALL_IDS
process_bets_resolving(betting_service_i &, betting_resolver_i &, database_virtual_operations_emmiter_i &, dba::db_accessor< game_object > &, dba::db_accessor< dynamic_global_property_object > &)