hyperledger/iroha
Iroha - A simple, decentralized ledger http://iroha.tech
pg_connection_init.hpp
Go to the documentation of this file.
1 
6 #ifndef IROHA_PG_CONNECTION_INIT_HPP
7 #define IROHA_PG_CONNECTION_INIT_HPP
8 
9 #include <soci/soci.h>
10 
11 #include <soci/callbacks.h>
12 #include <soci/postgresql/soci-postgresql.h>
13 #include <boost/algorithm/string.hpp>
14 #include <boost/range/algorithm/replace_if.hpp>
15 
20 #include "common/result.hpp"
22 #include "logger/logger_fwd.hpp"
24 #include "main/startup_params.hpp"
25 
26 namespace iroha {
27  namespace ametsuchi {
28 
29  struct PoolWrapper;
30 
32  public:
34  std::string>
35  init(StartupWsvDataPolicy startup_wsv_data_policy,
37  logger::LoggerManagerTreePtr log_manager);
38 
40  StartupWsvDataPolicy startup_wsv_data_policy,
41  const PostgresOptions &options);
42 
45  const ReconnectionStrategyFactory &reconnection_strategy_factory,
46  const PostgresOptions &options,
47  const int pool_size,
48  logger::LoggerManagerTreePtr log_manager);
49 
53  static bool preparedTransactionsAvailable(soci::session &sql);
54 
56  soci::session &sql, const std::string &prepared_block_name);
57 
58  /*
59  * Drop working database.
60  * @return Error message if dropping has failed.
61  */
63  const PostgresOptions &options);
64 
69  static expected::Result<void, std::string> resetPeers(soci::session &sql);
70 
72  static void prepareTables(soci::session &session);
73 
79  const PostgresOptions &postgres_options);
80 
81  private:
97  template <typename RollbackFunction>
98  static expected::Result<void, std::string> initializeConnectionPool(
99  soci::connection_pool &connection_pool,
100  size_t pool_size,
101  RollbackFunction try_rollback,
102  FailoverCallbackHolder &callback_factory,
103  const ReconnectionStrategyFactory &reconnection_strategy_factory,
104  const std::string &pg_reconnection_options,
105  logger::LoggerManagerTreePtr log_manager);
106  };
107  } // namespace ametsuchi
108 } // namespace iroha
109 
110 #endif // IROHA_PG_CONNECTION_INIT_HPP
Definition: postgres_options.hpp:19
static bool preparedTransactionsAvailable(soci::session &sql)
Definition: pg_connection_init.cpp:223
static expected::Result< void, std::string > createSchema(const PostgresOptions &postgres_options)
Definition: pg_connection_init.cpp:466
Definition: reconnection_strategy.hpp:35
Definition: pg_connection_init.hpp:31
static expected::Result< std::shared_ptr< PoolWrapper >, std::string > prepareConnectionPool(const ReconnectionStrategyFactory &reconnection_strategy_factory, const PostgresOptions &options, const int pool_size, logger::LoggerManagerTreePtr log_manager)
Definition: pg_connection_init.cpp:170
Definition: failover_callback_holder.hpp:13
Definition: result_fwd.hpp:27
static expected::Result< std::shared_ptr< iroha::ametsuchi::PoolWrapper >, std::string > init(StartupWsvDataPolicy startup_wsv_data_policy, iroha::ametsuchi::PostgresOptions const &pg_opt, logger::LoggerManagerTreePtr log_manager)
Definition: pg_connection_init.cpp:138
Definition: block_query.hpp:15
StartupWsvDataPolicy
Definition: startup_params.hpp:13
std::shared_ptr< LoggerManagerTree > LoggerManagerTreePtr
Definition: logger_manager_fwd.hpp:14
static void prepareTables(soci::session &session)
Create tables in the given session. Left public for tests.
Definition: pg_connection_init.cpp:304
static iroha::expected::Result< void, std::string > rollbackPrepared(soci::session &sql, const std::string &prepared_block_name)
Definition: pg_connection_init.cpp:233
static expected::Result< void, std::string > dropWorkingDatabase(const PostgresOptions &options)
Definition: pg_connection_init.cpp:459
static expected::Result< void, std::string > prepareWorkingDatabase(StartupWsvDataPolicy startup_wsv_data_policy, const PostgresOptions &options)
Definition: pg_connection_init.cpp:150
static expected::Result< void, std::string > resetPeers(soci::session &sql)
Definition: pg_connection_init.cpp:483