Scorum
libraries
chain
database
block_tasks
process_contracts_expiration.cpp
Go to the documentation of this file.
1
#include <
scorum/chain/database/block_tasks/process_contracts_expiration.hpp
>
2
3
#include <
scorum/chain/services/atomicswap.hpp
>
4
#include <
scorum/chain/services/dynamic_global_property.hpp
>
5
#include <
scorum/chain/schema/atomicswap_objects.hpp
>
6
7
namespace
scorum
{
8
namespace
chain {
9
namespace
database_ns {
10
11
void
process_contracts_expiration::on_apply
(
block_task_context
& ctx)
12
{
13
debug_log
(ctx.
get_block_info
(),
"process_contracts_expiration BEGIN"
);
14
15
data_service_factory_i& services = ctx.
services
();
16
atomicswap_service_i
& atomicswap_service = services.atomicswap_service();
17
dynamic_global_property_service_i
& dyn_prop_service = services.dynamic_global_property_service();
18
19
auto
contracts = atomicswap_service.
get_contracts
();
20
const
auto
& props = dyn_prop_service.
get
();
21
22
for
(
const
atomicswap_contract_object& contract : contracts)
23
{
24
if
(props.time >= contract.deadline)
25
{
26
if
(contract.secret.empty())
27
{
28
auto
owner
= contract.owner;
29
auto
refund_amount = contract.amount;
30
31
// only for initiator or not redeemed participant contracts
32
atomicswap_service.
refund_contract
(contract);
33
34
ctx.
push_virtual_operation
(
expired_contract_refund_operation
(
owner
, refund_amount));
35
}
36
else
37
{
38
atomicswap_service.
remove
(contract);
39
}
40
}
41
}
42
43
debug_log
(ctx.
get_block_info
(),
"process_contracts_expiration END"
);
44
}
45
}
46
}
47
}
atomicswap.hpp
atomicswap_objects.hpp
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::database_ns::block_task_context::push_virtual_operation
virtual void push_virtual_operation(const operation &op)
Definition:
block_tasks.cpp:22
scorum::chain::database_ns::process_contracts_expiration::on_apply
virtual void on_apply(block_task_context &)
Definition:
process_contracts_expiration.cpp:11
debug_log
#define debug_log(CTX, FORMAT,...)
Definition:
debug_log.hpp:3
dynamic_global_property.hpp
scorum::wallet::owner
@ owner
Definition:
wallet.hpp:76
scorum
Definition:
asset.cpp:15
process_contracts_expiration.hpp
scorum::chain::atomicswap_service_i
Definition:
atomicswap.hpp:13
scorum::chain::atomicswap_service_i::refund_contract
virtual void refund_contract(const atomicswap_contract_object &contract)=0
scorum::chain::atomicswap_service_i::get_contracts
virtual atomicswap_contracts_refs_type get_contracts() const =0
scorum::chain::base_service_i::get
virtual const object_type & get() const =0
scorum::chain::base_service_i::remove
virtual void remove()=0
scorum::chain::dynamic_global_property_service_i
Definition:
dynamic_global_property.hpp:9
scorum::protocol::expired_contract_refund_operation
Definition:
scorum_virtual_operations.hpp:309
Generated on Thu Jun 9 2022 13:04:24 for Scorum by
1.9.1