hyperledger/iroha
Iroha - A simple, decentralized ledger http://iroha.tech
temporary_wsv_impl.hpp
Go to the documentation of this file.
1 
6 #ifndef IROHA_TEMPORARY_WSV_IMPL_HPP
7 #define IROHA_TEMPORARY_WSV_IMPL_HPP
8 
10 
13 #include "logger/logger_fwd.hpp"
15 
16 namespace shared_model {
17  namespace interface {
18  class PermissionToString;
19  }
20 } // namespace shared_model
21 
22 namespace iroha::ametsuchi {
23  class TransactionExecutor;
24 
25  class TemporaryWsvImpl : public TemporaryWsv {
26  friend class StorageImpl;
27 
28  public:
31  std::string savepoint_name,
32  logger::LoggerPtr log);
33  ~SavepointWrapperImpl() override;
34 
35  void release() override;
36 
37  private:
39  bool is_released_;
40  logger::LoggerPtr log_;
41  std::string savepoint_name_;
42  };
43 
44  TemporaryWsvImpl(std::shared_ptr<CommandExecutor> command_executor,
45  logger::LoggerManagerTreePtr log_manager);
46 
48  const shared_model::interface::Transaction &transaction) override;
49 
50  std::unique_ptr<TemporaryWsv::SavepointWrapper> createSavepoint(
51  const std::string &name) override;
52 
53  ~TemporaryWsvImpl() override;
54 
55  DatabaseTransaction &getDbTransaction() override;
56 
57  protected:
62  virtual expected::Result<void, validation::CommandError> validateSignatures(
63  const shared_model::interface::Transaction &transaction) = 0;
64 
66  std::unique_ptr<TransactionExecutor> transaction_executor_;
69  };
70 
71 } // namespace iroha::ametsuchi
72 
73 #endif // IROHA_TEMPORARY_WSV_IMPL_HPP
Definition: block_query.hpp:17
decltype(auto) constexpr apply(Tuple &&t, F &&f)
apply F to Tuple
Definition: soci_utils.hpp:72
Definition: result_fwd.hpp:27
std::shared_ptr< Logger > LoggerPtr
Definition: logger_fwd.hpp:22
Definition: temporary_wsv_impl.hpp:25
Definition: temporary_wsv.hpp:28
std::shared_ptr< LoggerManagerTree > LoggerManagerTreePtr
Definition: logger_manager_fwd.hpp:14
logger::LoggerManagerTreePtr log_manager_
Definition: temporary_wsv_impl.hpp:67
Definition: db_transaction.hpp:13
DatabaseTransaction & tx_
Definition: temporary_wsv_impl.hpp:65
Definition: temporary_wsv.hpp:34
Definition: command_executor.hpp:13
Definition: storage_impl.hpp:28
std::unique_ptr< TransactionExecutor > transaction_executor_
Definition: temporary_wsv_impl.hpp:66
logger::LoggerPtr log_
Definition: temporary_wsv_impl.hpp:68
Definition: transaction.hpp:23