Scorum
process_bets_auto_resolving.cpp
Go to the documentation of this file.
6 
8 
13 
14 namespace scorum {
15 namespace chain {
16 namespace database_ns {
17 
22  : _betting_svc(betting_svc)
23  , _vop_emitter(vop_emitter)
24  , _game_dba(game_dba)
25  , _dprop_dba(dprop_dba)
26 {
27 }
28 
30 {
31  using namespace dba;
32 
33  debug_log(ctx.get_block_info(), "process_bets_auto_resolving BEGIN");
34 
35  auto head_time = _dprop_dba.get().time;
36  auto games = _game_dba.get_range_by<by_auto_resolve_time>(unbounded, _x <= std::make_tuple(head_time, ALL_IDS));
37 
38  utils::foreach_mut(games, [&](const game_object& game) {
39 
40  auto uuid = game.uuid;
41  auto old_status = game.status;
42 
43  _betting_svc.cancel_bets(uuid);
44  _betting_svc.cancel_game(uuid);
45 
46  _vop_emitter.push_virtual_operation(game_status_changed_operation{ uuid, old_status, game_status::expired });
47  });
48 
49  debug_log(ctx.get_block_info(), "process_bets_auto_resolving END");
50 }
51 }
52 }
53 }
#define debug_log(CTX, FORMAT,...)
Definition: debug_log.hpp:3
const param_placeholder _x
Definition: asset.cpp:15
#define ALL_IDS
process_bets_auto_resolving(betting_service_i &, database_virtual_operations_emmiter_i &, dba::db_accessor< game_object > &, dba::db_accessor< dynamic_global_property_object > &)