hyperledger/iroha
Iroha - A simple, decentralized ledger http://iroha.tech
iroha::ametsuchi::StorageImpl Class Reference

#include "storage_impl.hpp"

Inheritance diagram for iroha::ametsuchi::StorageImpl:
Inheritance graph
Collaboration diagram for iroha::ametsuchi::StorageImpl:
Collaboration graph

Public Member Functions

expected::Result< std::unique_ptr< TemporaryWsv >, std::string > createTemporaryWsv () override
 
expected::Result< std::unique_ptr< MutableStorage >, std::string > createMutableStorage () override
 
boost::optional< std::shared_ptr< PeerQuery > > createPeerQuery () const override
 
boost::optional< std::shared_ptr< BlockQuery > > createBlockQuery () const override
 
boost::optional< std::shared_ptr< QueryExecutor > > createQueryExecutor (std::shared_ptr< PendingTransactionStorage > pending_txs_storage, std::shared_ptr< shared_model::interface::QueryResponseFactory > response_factory) const override
 
bool insertBlock (std::shared_ptr< const shared_model::interface::Block > block) override
 
expected::Result< void, std::string > insertPeer (const shared_model::interface::Peer &peer) override
 
expected::Result< std::unique_ptr< MutableStorage >, std::string > createMutableStorage (BlockStorageFactory &storage_factory) override
 
void reset () override
 
expected::Result< void, std::string > resetWsv () override
 
void resetPeers () override
 
void dropStorage () override
 
void freeConnections () override
 
CommitResult commit (std::unique_ptr< MutableStorage > mutable_storage) override
 
bool preparedCommitEnabled () const override
 Check if prepared commits are enabled. More...
 
CommitResult commitPrepared (std::shared_ptr< const shared_model::interface::Block > block) override
 
std::shared_ptr< WsvQuerygetWsvQuery () const override
 
std::shared_ptr< BlockQuerygetBlockQuery () const override
 
rxcpp::observable< std::shared_ptr< const shared_model::interface::Block > > on_commit () override
 
void prepareBlock (std::unique_ptr< TemporaryWsv > wsv) override
 
 ~StorageImpl () override
 
- Public Member Functions inherited from iroha::ametsuchi::Storage
virtual ~Storage ()=default
 
- Public Member Functions inherited from iroha::ametsuchi::TemporaryFactory
virtual ~TemporaryFactory ()=default
 
- Public Member Functions inherited from iroha::ametsuchi::MutableFactory
virtual ~MutableFactory ()=default
 
- Public Member Functions inherited from iroha::ametsuchi::PeerQueryFactory
virtual ~PeerQueryFactory ()=default
 
- Public Member Functions inherited from iroha::ametsuchi::BlockQueryFactory
virtual ~BlockQueryFactory ()=default
 
- Public Member Functions inherited from iroha::ametsuchi::QueryExecutorFactory
virtual ~QueryExecutorFactory ()=default
 

Static Public Member Functions

static expected::Result< std::shared_ptr< StorageImpl >, std::string > create (std::string block_store_dir, const PostgresOptions &options, PoolWrapper pool_wrapper, std::shared_ptr< shared_model::interface::CommonObjectsFactory > factory, std::shared_ptr< shared_model::interface::BlockJsonConverter > converter, std::shared_ptr< shared_model::interface::PermissionToString > perm_converter, std::unique_ptr< BlockStorageFactory > block_storage_factory, logger::LoggerManagerTreePtr log_manager, size_t pool_size=10)
 

Protected Member Functions

 StorageImpl (boost::optional< std::shared_ptr< const iroha::LedgerState >> ledger_state, PostgresOptions postgres_options, std::unique_ptr< KeyValueStorage > block_store, PoolWrapper pool_wrapper, std::shared_ptr< shared_model::interface::CommonObjectsFactory > factory, std::shared_ptr< shared_model::interface::BlockJsonConverter > converter, std::shared_ptr< shared_model::interface::PermissionToString > perm_converter, std::unique_ptr< BlockStorageFactory > block_storage_factory, size_t pool_size, const std::string &prepared_block_name, logger::LoggerManagerTreePtr log_manager)
 

Static Protected Member Functions

static expected::Result< ConnectionContext, std::string > initConnections (std::string block_store_dir, logger::LoggerPtr log)
 

Protected Attributes

const PostgresOptions postgres_options_
 

Static Protected Attributes

static const std::string & reset_
 
static const std::string & reset_peers_
 

Constructor & Destructor Documentation

iroha::ametsuchi::StorageImpl::~StorageImpl ( )
override

Here is the call graph for this function:

iroha::ametsuchi::StorageImpl::StorageImpl ( boost::optional< std::shared_ptr< const iroha::LedgerState >>  ledger_state,
PostgresOptions  postgres_options,
std::unique_ptr< KeyValueStorage block_store,
PoolWrapper  pool_wrapper,
std::shared_ptr< shared_model::interface::CommonObjectsFactory factory,
std::shared_ptr< shared_model::interface::BlockJsonConverter converter,
std::shared_ptr< shared_model::interface::PermissionToString perm_converter,
std::unique_ptr< BlockStorageFactory block_storage_factory,
size_t  pool_size,
const std::string &  prepared_block_name,
logger::LoggerManagerTreePtr  log_manager 
)
protected

Here is the caller graph for this function:

Member Function Documentation

CommitResult iroha::ametsuchi::StorageImpl::commit ( std::unique_ptr< MutableStorage mutableStorage)
overridevirtual

Commit mutable storage to Ametsuchi. This transforms Ametsuchi to the new state consistent with MutableStorage.

Parameters
mutableStorage
Returns
the status of commit

Implements iroha::ametsuchi::MutableFactory.

Here is the call graph for this function:

Here is the caller graph for this function:

CommitResult iroha::ametsuchi::StorageImpl::commitPrepared ( std::shared_ptr< const shared_model::interface::Block block)
overridevirtual

Try to apply prepared block to Ametsuchi.

Parameters
blockThe previously prepared block that will be committed now.
Returns
Result of committing the prepared block.

Implements iroha::ametsuchi::MutableFactory.

Here is the call graph for this function:

expected::Result< std::shared_ptr< StorageImpl >, std::string > iroha::ametsuchi::StorageImpl::create ( std::string  block_store_dir,
const PostgresOptions options,
PoolWrapper  pool_wrapper,
std::shared_ptr< shared_model::interface::CommonObjectsFactory factory,
std::shared_ptr< shared_model::interface::BlockJsonConverter converter,
std::shared_ptr< shared_model::interface::PermissionToString perm_converter,
std::unique_ptr< BlockStorageFactory block_storage_factory,
logger::LoggerManagerTreePtr  log_manager,
size_t  pool_size = 10 
)
static

Here is the call graph for this function:

boost::optional< std::shared_ptr< BlockQuery > > iroha::ametsuchi::StorageImpl::createBlockQuery ( ) const
overridevirtual

Creates a block query from the current state.

Returns
Created block query

Implements iroha::ametsuchi::BlockQueryFactory.

Here is the call graph for this function:

expected::Result< std::unique_ptr< MutableStorage >, std::string > iroha::ametsuchi::StorageImpl::createMutableStorage ( )
overridevirtual

Creates a mutable storage from the current state. Mutable storage is the only way to commit the block to the ledger.

Returns
Created Result with mutable storage or error string

Implements iroha::ametsuchi::MutableFactory.

Here is the caller graph for this function:

expected::Result< std::unique_ptr< MutableStorage >, std::string > iroha::ametsuchi::StorageImpl::createMutableStorage ( BlockStorageFactory storage_factory)
overridevirtual

Creates a mutable storage from the current state

Returns
Created Result with mutable storage or error string

Implements iroha::ametsuchi::Storage.

Here is the call graph for this function:

boost::optional< std::shared_ptr< PeerQuery > > iroha::ametsuchi::StorageImpl::createPeerQuery ( ) const
overridevirtual

Creates a peer query from the current state.

Returns
Created peer query

Implements iroha::ametsuchi::PeerQueryFactory.

Here is the call graph for this function:

boost::optional< std::shared_ptr< QueryExecutor > > iroha::ametsuchi::StorageImpl::createQueryExecutor ( std::shared_ptr< PendingTransactionStorage pending_txs_storage,
std::shared_ptr< shared_model::interface::QueryResponseFactory response_factory 
) const
overridevirtual

Creates a query executor from the current state

Implements iroha::ametsuchi::QueryExecutorFactory.

expected::Result< std::unique_ptr< TemporaryWsv >, std::string > iroha::ametsuchi::StorageImpl::createTemporaryWsv ( )
overridevirtual

Creates a temporary world state view from the current state. Temporary state will be not committed and will be erased on destructor call. Temporary state might be used for transaction validation.

Returns
Created Result with temporary wsv or string error

Implements iroha::ametsuchi::TemporaryFactory.

void iroha::ametsuchi::StorageImpl::dropStorage ( )
overridevirtual

Remove all information from ledger Tables and the database will be removed too TODO: 2019-05-22 move method to TestStorage IR-493

Implements iroha::ametsuchi::Storage.

Here is the call graph for this function:

void iroha::ametsuchi::StorageImpl::freeConnections ( )
overridevirtual

Implements iroha::ametsuchi::Storage.

Here is the caller graph for this function:

std::shared_ptr< BlockQuery > iroha::ametsuchi::StorageImpl::getBlockQuery ( ) const
overridevirtual

Implements iroha::ametsuchi::Storage.

Here is the caller graph for this function:

std::shared_ptr< WsvQuery > iroha::ametsuchi::StorageImpl::getWsvQuery ( ) const
overridevirtual

Implements iroha::ametsuchi::Storage.

Here is the caller graph for this function:

expected::Result< ConnectionContext, std::string > iroha::ametsuchi::StorageImpl::initConnections ( std::string  block_store_dir,
logger::LoggerPtr  log 
)
staticprotected

Here is the call graph for this function:

Here is the caller graph for this function:

bool iroha::ametsuchi::StorageImpl::insertBlock ( std::shared_ptr< const shared_model::interface::Block block)
overridevirtual

Raw insertion of blocks without validation

Parameters
block- block for insertion
Returns
true if inserted

Implements iroha::ametsuchi::Storage.

Here is the call graph for this function:

expected::Result< void, std::string > iroha::ametsuchi::StorageImpl::insertPeer ( const shared_model::interface::Peer peer)
overridevirtual

Insert a peer into WSV

Parameters
peer- peer to insert
Returns
error reason if not inserted

Implements iroha::ametsuchi::Storage.

Here is the call graph for this function:

rxcpp::observable< std::shared_ptr< const shared_model::interface::Block > > iroha::ametsuchi::StorageImpl::on_commit ( )
overridevirtual

method called when block is written to the storage

Returns
observable with the Block committed

Implements iroha::ametsuchi::Storage.

void iroha::ametsuchi::StorageImpl::prepareBlock ( std::unique_ptr< TemporaryWsv wsv)
overridevirtual

Prepare state which was accumulated in temporary WSV. After preparation, this state is not visible until commited.

Parameters
wsv- state which will be prepared.

Implements iroha::ametsuchi::TemporaryFactory.

Here is the call graph for this function:

bool iroha::ametsuchi::StorageImpl::preparedCommitEnabled ( ) const
overridevirtual

Check if prepared commits are enabled.

Implements iroha::ametsuchi::MutableFactory.

void iroha::ametsuchi::StorageImpl::reset ( )
overridevirtual

Remove all records from the tables and remove all the blocks

Implements iroha::ametsuchi::Storage.

Here is the call graph for this function:

void iroha::ametsuchi::StorageImpl::resetPeers ( )
overridevirtual

Removes all peers from WSV

Implements iroha::ametsuchi::Storage.

Here is the call graph for this function:

expected::Result< void, std::string > iroha::ametsuchi::StorageImpl::resetWsv ( )
overridevirtual

Implements iroha::ametsuchi::Storage.

Here is the call graph for this function:

Here is the caller graph for this function:

Member Data Documentation

const PostgresOptions iroha::ametsuchi::StorageImpl::postgres_options_
protected
const std::string & iroha::ametsuchi::StorageImpl::reset_
staticprotected
Initial value:
= R"(
TRUNCATE TABLE account_has_signatory RESTART IDENTITY CASCADE;
TRUNCATE TABLE account_has_asset RESTART IDENTITY CASCADE;
TRUNCATE TABLE role_has_permissions RESTART IDENTITY CASCADE;
TRUNCATE TABLE account_has_roles RESTART IDENTITY CASCADE;
TRUNCATE TABLE account_has_grantable_permissions RESTART IDENTITY CASCADE;
TRUNCATE TABLE account RESTART IDENTITY CASCADE;
TRUNCATE TABLE asset RESTART IDENTITY CASCADE;
TRUNCATE TABLE domain RESTART IDENTITY CASCADE;
TRUNCATE TABLE signatory RESTART IDENTITY CASCADE;
TRUNCATE TABLE peer RESTART IDENTITY CASCADE;
TRUNCATE TABLE role RESTART IDENTITY CASCADE;
TRUNCATE TABLE position_by_hash RESTART IDENTITY CASCADE;
TRUNCATE TABLE tx_status_by_hash RESTART IDENTITY CASCADE;
TRUNCATE TABLE height_by_account_set RESTART IDENTITY CASCADE;
TRUNCATE TABLE index_by_creator_height RESTART IDENTITY CASCADE;
TRUNCATE TABLE position_by_account_asset RESTART IDENTITY CASCADE;
)"
const std::string & iroha::ametsuchi::StorageImpl::reset_peers_
staticprotected
Initial value:
= R"(
TRUNCATE TABLE peer RESTART IDENTITY CASCADE;
)"

The documentation for this class was generated from the following files: