Scorum
libraries
chain
database
block_tasks
process_bets_auto_resolving.cpp
Go to the documentation of this file.
1
#include <
scorum/chain/database/block_tasks/process_bets_auto_resolving.hpp
>
2
#include <
scorum/chain/services/dynamic_global_property.hpp
>
3
#include <
scorum/chain/services/game.hpp
>
4
#include <
scorum/chain/betting/betting_resolver.hpp
>
5
#include <
scorum/chain/betting/betting_service.hpp
>
6
7
#include <
scorum/chain/dba/db_accessor.hpp
>
8
9
#include <
scorum/chain/schema/bet_objects.hpp
>
10
#include <
scorum/chain/schema/dynamic_global_property_object.hpp
>
11
#include <
scorum/chain/schema/game_object.hpp
>
12
#include <
scorum/chain/database/database_virtual_operations.hpp
>
13
14
namespace
scorum
{
15
namespace
chain {
16
namespace
database_ns {
17
18
process_bets_auto_resolving::process_bets_auto_resolving
(
betting_service_i
& betting_svc,
19
database_virtual_operations_emmiter_i
& vop_emitter,
20
dba::db_accessor<game_object>
& game_dba,
21
dba::db_accessor<dynamic_global_property_object>
& dprop_dba)
22
: _betting_svc(betting_svc)
23
, _vop_emitter(vop_emitter)
24
, _game_dba(game_dba)
25
, _dprop_dba(dprop_dba)
26
{
27
}
28
29
void
process_bets_auto_resolving::on_apply
(
block_task_context
& ctx)
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
}
bet_objects.hpp
betting_resolver.hpp
betting_service.hpp
game.hpp
scorum::chain::database_ns::block_task_context
Definition:
block_tasks.hpp:16
scorum::chain::database_ns::block_task_context::get_block_info
block_info & get_block_info() const
Definition:
block_tasks.hpp:30
scorum::chain::dba::db_accessor
Definition:
db_accessor.hpp:178
scorum::chain::game_object
Definition:
game_object.hpp:39
scorum::chain::game_object::uuid
uuid_type uuid
Definition:
game_object.hpp:48
scorum::chain::game_object::status
game_status status
Definition:
game_object.hpp:57
database_virtual_operations.hpp
db_accessor.hpp
debug_log
#define debug_log(CTX, FORMAT,...)
Definition:
debug_log.hpp:3
dynamic_global_property.hpp
dynamic_global_property_object.hpp
game_object.hpp
scorum::chain::dba::_x
const param_placeholder _x
Definition:
db_accessor_helpers.hpp:19
scorum::protocol::game_status::expired
@ expired
scorum
Definition:
asset.cpp:15
process_bets_auto_resolving.hpp
ALL_IDS
#define ALL_IDS
Definition:
service_base.hpp:185
scorum::chain::betting_service_i
Definition:
betting_service.hpp:32
scorum::chain::database_ns::process_bets_auto_resolving::process_bets_auto_resolving
process_bets_auto_resolving(betting_service_i &, database_virtual_operations_emmiter_i &, dba::db_accessor< game_object > &, dba::db_accessor< dynamic_global_property_object > &)
Definition:
process_bets_auto_resolving.cpp:18
scorum::chain::database_ns::process_bets_auto_resolving::on_apply
virtual void on_apply(block_task_context &)
Definition:
process_bets_auto_resolving.cpp:29
scorum::chain::database_virtual_operations_emmiter_i
Definition:
database_virtual_operations.hpp:12
scorum::protocol::game_status_changed_operation
Definition:
scorum_virtual_operations.hpp:427
Generated on Thu Jun 9 2022 13:04:24 for Scorum by
1.9.1