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< CommandExecutor >, std::string > createCommandExecutor () override
 
std::unique_ptr< TemporaryWsvcreateTemporaryWsv (std::shared_ptr< CommandExecutor > command_executor) override
 
std::unique_ptr< MutableStoragecreateMutableStorage (std::shared_ptr< CommandExecutor > command_executor) 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
 
std::unique_ptr< MutableStoragecreateMutableStorage (std::shared_ptr< CommandExecutor > command_executor, 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::unique_ptr< ametsuchi::PostgresOptions > postgres_options, std::shared_ptr< PoolWrapper > pool_wrapper, std::shared_ptr< shared_model::interface::PermissionToString > perm_converter, std::shared_ptr< PendingTransactionStorage > pending_txs_storage, std::shared_ptr< shared_model::interface::QueryResponseFactory > query_response_factory, std::unique_ptr< BlockStorageFactory > temporary_block_storage_factory, std::unique_ptr< BlockStorage > persistent_block_storage, logger::LoggerManagerTreePtr log_manager, size_t pool_size=10)
 

Protected Member Functions

 StorageImpl (boost::optional< std::shared_ptr< const iroha::LedgerState >> ledger_state, std::unique_ptr< ametsuchi::PostgresOptions > postgres_options, std::unique_ptr< BlockStorage > block_store, std::shared_ptr< PoolWrapper > pool_wrapper, std::shared_ptr< shared_model::interface::PermissionToString > perm_converter, std::shared_ptr< PendingTransactionStorage > pending_txs_storage, std::shared_ptr< shared_model::interface::QueryResponseFactory > query_response_factory, std::unique_ptr< BlockStorageFactory > temporary_block_storage_factory, size_t pool_size, logger::LoggerManagerTreePtr log_manager)
 

Protected Attributes

const std::unique_ptr< ametsuchi::PostgresOptionspostgres_options_
 

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,
std::unique_ptr< ametsuchi::PostgresOptions postgres_options,
std::unique_ptr< BlockStorage block_store,
std::shared_ptr< PoolWrapper pool_wrapper,
std::shared_ptr< shared_model::interface::PermissionToString perm_converter,
std::shared_ptr< PendingTransactionStorage pending_txs_storage,
std::shared_ptr< shared_model::interface::QueryResponseFactory query_response_factory,
std::unique_ptr< BlockStorageFactory temporary_block_storage_factory,
size_t  pool_size,
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 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::unique_ptr< ametsuchi::PostgresOptions postgres_options,
std::shared_ptr< PoolWrapper pool_wrapper,
std::shared_ptr< shared_model::interface::PermissionToString perm_converter,
std::shared_ptr< PendingTransactionStorage pending_txs_storage,
std::shared_ptr< shared_model::interface::QueryResponseFactory query_response_factory,
std::unique_ptr< BlockStorageFactory temporary_block_storage_factory,
std::unique_ptr< BlockStorage persistent_block_storage,
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< CommandExecutor >, std::string > iroha::ametsuchi::StorageImpl::createCommandExecutor ( )
overridevirtual

Create new command executor that holds a database session within.

Returns
The command executor or string error message.

Implements iroha::ametsuchi::Storage.

Here is the caller graph for this function:

std::unique_ptr< MutableStorage > iroha::ametsuchi::StorageImpl::createMutableStorage ( std::shared_ptr< CommandExecutor command_executor)
overridevirtual

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

Returns
Created mutable storage

Implements iroha::ametsuchi::MutableFactory.

Here is the caller graph for this function:

std::unique_ptr< MutableStorage > iroha::ametsuchi::StorageImpl::createMutableStorage ( std::shared_ptr< CommandExecutor command_executor,
BlockStorageFactory storage_factory 
)
overridevirtual

Creates a mutable storage from the current state

Returns
Created mutable storage.

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.

std::unique_ptr< TemporaryWsv > iroha::ametsuchi::StorageImpl::createTemporaryWsv ( std::shared_ptr< CommandExecutor command_executor)
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 temporary wsv.

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:

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.

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 std::unique_ptr<ametsuchi::PostgresOptions> iroha::ametsuchi::StorageImpl::postgres_options_
protected

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