Scorum
initializators.hpp
Go to the documentation of this file.
1 #pragma once
2 
4 
5 namespace scorum {
6 namespace chain {
7 namespace dba {
8 struct db_accessor_factory;
9 }
10 struct data_service_factory_i;
11 struct genesis_state_type;
12 
13 namespace genesis {
14 
16 {
17 public:
18  explicit initializator_context(data_service_factory_i& services,
21 
22  data_service_factory_i& services() const
23  {
24  return _services;
25  }
26 
28  {
29  return _dba_factory;
30  }
31 
33  {
34  return _genesis_state;
35  }
36 
37 private:
38  data_service_factory_i& _services;
39  dba::db_accessor_factory& _dba_factory;
40  const genesis_state_type& _genesis_state;
41 };
42 
43 class single_time_apply_guard : public task_reentrance_guard_i<initializator_context>
44 {
45 public:
47  {
48  return !_applied;
49  }
51  {
52  _applied = true;
53  }
54 
55 private:
56  bool _applied = false;
57 };
58 
59 class initializator : public task<initializator_context, single_time_apply_guard>
60 {
61 protected:
63  {
64  }
65 };
66 
67 } // genesis
68 }
69 }
dba::db_accessor_factory & dba_factory() const
initializator_context(data_service_factory_i &services, dba::db_accessor_factory &dba_factory, const genesis_state_type &genesis_state)
const genesis_state_type & genesis_state() const
data_service_factory_i & services() const
virtual void apply(initializator_context &)
virtual bool is_allowed(initializator_context &)
Definition: asset.cpp:15