Scorum
libraries
chain
database
block_tasks
process_games_startup.cpp
Go to the documentation of this file.
1
#include <
scorum/chain/database/block_tasks/process_games_startup.hpp
>
2
3
#include <boost/range/adaptor/filtered.hpp>
4
5
#include <
scorum/chain/schema/bet_objects.hpp
>
6
7
#include <
scorum/chain/services/dynamic_global_property.hpp
>
8
#include <
scorum/chain/services/game.hpp
>
9
#include <
scorum/chain/betting/betting_service.hpp
>
10
11
namespace
scorum
{
12
namespace
chain {
13
namespace
database_ns {
14
15
process_games_startup::process_games_startup
(
betting_service_i
&
betting_service
,
16
database_virtual_operations_emmiter_i
& virt_op_emitter)
17
: _betting_svc(
betting_service
)
18
, _virt_op_emitter(virt_op_emitter)
19
{
20
}
21
22
void
process_games_startup::on_apply
(
block_task_context
& ctx)
23
{
24
using namespace
boost::adaptors;
25
debug_log
(ctx.
get_block_info
(),
"process_games_startup BEGIN"
);
26
27
auto
& dprops_service = ctx.
services
().dynamic_global_property_service();
28
auto
& game_service = ctx.
services
().game_service();
29
30
auto
games = game_service.get_games(dprops_service.head_block_time());
31
for
(
const
auto
& game : filter(games, [](
const
auto
& g) {
return
g.get().status ==
game_status::created
; }))
32
{
33
game_service.update(game, [](
game_object
& o) { o.
status
= game_status::started; });
34
35
_betting_svc.cancel_pending_bets(game.get().uuid,
pending_bet_kind::non_live
);
36
37
_virt_op_emitter.push_virtual_operation(
38
game_status_changed_operation
(game.get().uuid,
game_status::created
, game_status::started));
39
}
40
41
debug_log
(ctx.
get_block_info
(),
"process_games_startup END"
);
42
}
43
}
44
}
45
}
bet_objects.hpp
betting_service.hpp
game.hpp
scorum::chain::betting_service
Definition:
betting_service.hpp:61
scorum::chain::database_ns::block_task_context
Definition:
block_tasks.hpp:16
scorum::chain::database_ns::block_task_context::services
data_service_factory_i & services() const
Definition:
block_tasks.hpp:25
scorum::chain::database_ns::block_task_context::get_block_info
block_info & get_block_info() const
Definition:
block_tasks.hpp:30
scorum::chain::game_object
Definition:
game_object.hpp:39
scorum::chain::game_object::status
game_status status
Definition:
game_object.hpp:57
debug_log
#define debug_log(CTX, FORMAT,...)
Definition:
debug_log.hpp:3
dynamic_global_property.hpp
scorum::chain::pending_bet_kind::non_live
@ non_live
scorum::protocol::game_status::created
@ created
scorum
Definition:
asset.cpp:15
process_games_startup.hpp
scorum::chain::betting_service_i
Definition:
betting_service.hpp:32
scorum::chain::database_ns::process_games_startup::process_games_startup
process_games_startup(betting_service_i &, database_virtual_operations_emmiter_i &)
Definition:
process_games_startup.cpp:15
scorum::chain::database_ns::process_games_startup::on_apply
virtual void on_apply(block_task_context &)
Definition:
process_games_startup.cpp:22
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