mutableboost::shared_mutexm_lock;///< General lock.
std::set<h256>m_drainingSet;///< All blocks being imported.
std::set<h256>m_readySet;///< All blocks ready for chain-import.
std::vector<std::pair<h256,bytes>>m_ready;///< List of blocks, in correct order, ready for chain-import.
std::set<h256>m_unknownSet;///< Set of all blocks whose parents are not ready/in-chain.
std::multimap<h256,std::pair<h256,bytes>>m_unknown;///< For blocks that have an unknown parent; we map their parent hash to the block stuff, and insert once the block appears.
std::set<h256>m_knownBad;///< Set of blocks that we know will never be valid.
std::multimap<unsigned,std::pair<h256,bytes>>m_future;///< Set of blocks that are not yet valid.
Signalm_onReady;///< Called when a subsequent call to import blocks will return a non-empty container. Be nice and exit fast.
mutableboost::shared_mutexm_lock;///< General lock.
h256Hashm_drainingSet;///< All blocks being imported.
h256Hashm_readySet;///< All blocks ready for chain-import.
std::vector<std::pair<h256,bytes>>m_ready;///< List of blocks, in correct order, ready for chain-import.
h256Hashm_unknownSet;///< Set of all blocks whose parents are not ready/in-chain.
std::unordered_multimap<h256,std::pair<h256,bytes>>m_unknown;///< For blocks that have an unknown parent; we map their parent hash to the block stuff, and insert once the block appears.
h256Hashm_knownBad;///< Set of blocks that we know will never be valid.
std::multimap<unsigned,std::pair<h256,bytes>>m_future;///< Set of blocks that are not yet valid. Ordered by timestamp
Signalm_onReady;///< Called when a subsequent call to import blocks will return a non-empty container. Be nice and exit fast.
// Find great-uncles (or second-cousins or whatever they are) - children of great-grandparents, great-great-grandparents... that were not already uncles in previous generations.
/// Execute the given block, assuming it corresponds to m_currentBlock.
/// Throws on failure.
@ -355,10 +354,10 @@ private:
SecureTrieDB<Address,OverlayDB>m_state;///< Our state tree, as an OverlayDB DB.
Transactionsm_transactions;///< The current list of transactions that we've included in the state.
TransactionReceiptsm_receipts;///< The corresponding list of transaction receipts.
std::set<h256>m_transactionSet;///< The set of transaction hashes that we've included in the state.
h256Hashm_transactionSet;///< The set of transaction hashes that we've included in the state.
OverlayDBm_lastTx;
mutablestd::map<Address,Account>m_cache;///< Our address cache. This stores the states of each address that has (or at least might have) been changed.
mutablestd::unordered_map<Address,Account>m_cache;///< Our address cache. This stores the states of each address that has (or at least might have) been changed.
BlockInfom_previousBlock;///< The previous block's information.
BlockInfom_currentBlock;///< The current block's information.
std::set<h256>m_known;///< Hashes of transactions in both sets.
std::map<h256,Transaction>m_current;///< Map of SHA3(tx) to tx.
std::multimap<Address,std::pair<h256,Transaction>>m_unknown;///< For transactions that have a future nonce; we map their sender address to the tx stuff, and insert once the sender has a valid TX.
std::map<h256,std::function<void(ImportResult)>>m_callbacks;///< Called once.
std::set<h256>m_dropped;///< Transactions that have previously been dropped.
std::multimap<Address,h256>m_senders;///< Mapping from the sender address to the transaction hash; useful for determining the nonce of a given sender.
Signalm_onReady;///< Called when a subsequent call to import transactions will return a non-empty container. Be nice and exit fast.
mutableSharedMutexm_lock;///< General lock.
h256Hashm_known;///< Hashes of transactions in both sets.
std::unordered_map<h256,Transaction>m_current;///< Map of SHA3(tx) to tx.
std::unordered_multimap<Address,std::pair<h256,Transaction>>m_unknown;///< For transactions that have a future nonce; we map their sender address to the tx stuff, and insert once the sender has a valid TX.
std::unordered_map<h256,std::function<void(ImportResult)>>m_callbacks;///< Called once.
h256Hashm_dropped;///< Transactions that have previously been dropped.
std::multimap<Address,h256>m_senders;///< Mapping from the sender address to the transaction hash; useful for determining the nonce of a given sender.
Signalm_onReady;///< Called when a subsequent call to import transactions will return a non-empty container. Be nice and exit fast.
Mutexx_pubkDiscoverPings;///< LOCK x_nodes first if both x_nodes and x_pubkDiscoverPings locks are required.
std::map<bi::address,TimePoint>m_pubkDiscoverPings;///< List of pending pings where node entry wasn't created due to unkown pubk.
Mutexx_pubkDiscoverPings;///< LOCK x_nodes first if both x_nodes and x_pubkDiscoverPings locks are required.
std::unordered_map<bi::address,TimePoint>m_pubkDiscoverPings;///< List of pending pings where node entry wasn't created due to unkown pubk.
Mutexx_findNodeTimeout;
std::list<NodeIdTimePoint>m_findNodeTimeout;///< Timeouts for pending Ping and FindNode requests.
std::list<NodeIdTimePoint>m_findNodeTimeout;///< Timeouts for pending Ping and FindNode requests.
ba::io_service&m_io;///< Used by bucket refresh timer.
std::shared_ptr<NodeSocket>m_socket;///< Shared pointer for our UDPSocket; ASIO requires shared_ptr.
NodeSocket*m_socketPointer;///< Set to m_socket.get(). Socket is created in constructor and disconnected in destructor to ensure access to pointer is safe.
ba::io_service&m_io;///< Used by bucket refresh timer.
std::shared_ptr<NodeSocket>m_socket;///< Shared pointer for our UDPSocket; ASIO requires shared_ptr.
NodeSocket*m_socketPointer;///< Set to m_socket.get(). Socket is created in constructor and disconnected in destructor to ensure access to pointer is safe.
boost::asio::deadline_timerm_bucketRefreshTimer;///< Timer which schedules and enacts bucket refresh.
boost::asio::deadline_timerm_evictionCheckTimer;///< Timer for handling node evictions.
boost::asio::deadline_timerm_bucketRefreshTimer;///< Timer which schedules and enacts bucket refresh.
boost::asio::deadline_timerm_evictionCheckTimer;///< Timer for handling node evictions.