libfoedus-core
FOEDUS Core Library
|
Packages all ComposedBinsBuffer to easily extract bins of current interest. More...
Packages all ComposedBinsBuffer to easily extract bins of current interest.
This is the highest-level of the object hierarchy defined in this file.
Definition at line 205 of file hash_composed_bins_impl.hpp.
#include <hash_composed_bins_impl.hpp>
Public Types | |
typedef HashIntermediatePage * | PagePtr |
Public Member Functions | |
ErrorStack | init (const HashRootInfoPage *const *inputs, uint32_t input_count, PagePtr root_page, uint16_t root_child_index, memory::AlignedMemory *read_buffer, cache::SnapshotFileSet *fileset, snapshot::SnapshotWriter *writer, uint32_t *writer_buffer_pos, uint32_t *writer_higher_buffer_pos, bool *had_any_change) |
ErrorCode | process_a_bin (uint32_t *installed_count, HashBin *next_lowest_bin) |
Consumes inputs for the cur_path_[0] page and install snapshot pointers there. More... | |
ErrorCode | switch_path (HashBin lowest_bin, cache::SnapshotFileSet *fileset, snapshot::SnapshotWriter *writer, uint32_t *writer_buffer_pos, uint32_t *writer_higher_buffer_pos) |
Moves cur_path_ to a page that cotains the specified bin. More... | |
ErrorCode | open_path (HashBin bin, uint8_t fixed_upto_level, cache::SnapshotFileSet *fileset, snapshot::SnapshotWriter *writer, uint32_t *writer_buffer_pos, uint32_t *writer_higher_buffer_pos) |
Recursively opens pages down from fixed_upto_level. More... | |
ErrorCode | assure_writer_buffer (snapshot::SnapshotWriter *writer, uint32_t *writer_buffer_pos, uint32_t writer_higher_buffer_pos) |
Subroutine to flush the writer if needed to make sure it has enough room. More... | |
Public Attributes | |
std::unique_ptr< ComposedBinsBuffer[] > | inputs_memory_ |
just for auto release More... | |
ComposedBinsBuffer * | inputs_ |
uint32_t | input_count_ |
total number of buffers in inputs_ More... | |
snapshot::SnapshotId | snapshot_id_ |
uint8_t | levels_ |
uint8_t | padding_ |
PagePtr | cur_path_ [kHashMaxLevels] |
The pages we are now composing. More... | |
Definition at line 206 of file hash_composed_bins_impl.hpp.
ErrorCode foedus::storage::hash::ComposedBinsMergedStream::assure_writer_buffer | ( | snapshot::SnapshotWriter * | writer, |
uint32_t * | writer_buffer_pos, | ||
uint32_t | writer_higher_buffer_pos | ||
) |
Subroutine to flush the writer if needed to make sure it has enough room.
Definition at line 290 of file hash_composed_bins_impl.cpp.
References ASSERT_ND, CHECK_ERROR_CODE, foedus::snapshot::SnapshotWriter::dump_pages(), foedus::snapshot::SnapshotWriter::expand_intermediate_memory(), foedus::snapshot::SnapshotWriter::get_intermediate_size(), foedus::snapshot::SnapshotWriter::get_page_size(), foedus::kErrorCodeOk, levels_, and UNLIKELY.
Referenced by open_path().
ErrorStack foedus::storage::hash::ComposedBinsMergedStream::init | ( | const HashRootInfoPage *const * | inputs, |
uint32_t | input_count, | ||
PagePtr | root_page, | ||
uint16_t | root_child_index, | ||
memory::AlignedMemory * | read_buffer, | ||
cache::SnapshotFileSet * | fileset, | ||
snapshot::SnapshotWriter * | writer, | ||
uint32_t * | writer_buffer_pos, | ||
uint32_t * | writer_higher_buffer_pos, | ||
bool * | had_any_change | ||
) |
Definition at line 87 of file hash_composed_bins_impl.cpp.
References ASSERT_ND, foedus::storage::hash::ComposedBinsBuffer::assure_read_buffer_size(), foedus::storage::hash::ComposedBin::bin_, cur_path_, foedus::memory::AlignedMemory::get_block(), foedus::storage::hash::ComposedBinsBuffer::get_cur_bin(), foedus::storage::hash::HashIntermediatePage::get_level(), foedus::storage::hash::HashIntermediatePage::get_pointer(), foedus::memory::AlignedMemory::get_size(), foedus::snapshot::SnapshotWriter::get_snapshot_id(), foedus::storage::hash::ComposedBinsBuffer::has_more(), foedus::storage::hash::ComposedBinsBuffer::init(), input_count_, inputs_, inputs_memory_, foedus::storage::hash::kInvalidHashBin, foedus::storage::kPageSize, foedus::kRetOk, levels_, open_path(), snapshot_id_, foedus::storage::DualPagePointer::snapshot_pointer_, foedus::storage::DualPagePointer::volatile_pointer_, foedus::storage::VolatilePagePointer::word, and WRAP_ERROR_CODE.
ErrorCode foedus::storage::hash::ComposedBinsMergedStream::open_path | ( | HashBin | bin, |
uint8_t | fixed_upto_level, | ||
cache::SnapshotFileSet * | fileset, | ||
snapshot::SnapshotWriter * | writer, | ||
uint32_t * | writer_buffer_pos, | ||
uint32_t * | writer_higher_buffer_pos | ||
) |
Recursively opens pages down from fixed_upto_level.
Definition at line 225 of file hash_composed_bins_impl.cpp.
References ASSERT_ND, assure_writer_buffer(), foedus::storage::hash::HashBinRange::begin_, CHECK_ERROR_CODE, foedus::storage::hash::IntermediateRoute::construct(), foedus::storage::hash::HashBinRange::contains(), cur_path_, foedus::storage::extract_snapshot_id_from_snapshot_pointer(), foedus::storage::hash::HashIntermediatePage::get_bin_range(), foedus::snapshot::SnapshotWriter::get_intermediate_base(), foedus::snapshot::SnapshotWriter::get_intermediate_size(), foedus::storage::hash::HashIntermediatePage::get_level(), foedus::snapshot::SnapshotWriter::get_next_page_id(), foedus::snapshot::SnapshotWriter::get_page_base(), foedus::snapshot::SnapshotWriter::get_page_size(), foedus::storage::hash::HashIntermediatePage::get_pointer(), foedus::storage::hash::HashIntermediatePage::header(), foedus::storage::hash::HashIntermediatePage::initialize_snapshot_page(), foedus::kErrorCodeOk, foedus::storage::hash::kHashMaxBins, foedus::storage::hash::kInvalidHashBin, foedus::storage::hash::HashBinRange::length(), levels_, foedus::storage::PageHeader::page_id_, foedus::cache::SnapshotFileSet::read_page(), foedus::storage::hash::IntermediateRoute::route, snapshot_id_, foedus::storage::DualPagePointer::snapshot_pointer_, and foedus::storage::PageHeader::storage_id_.
Referenced by init(), and switch_path().
ErrorCode foedus::storage::hash::ComposedBinsMergedStream::process_a_bin | ( | uint32_t * | installed_count, |
HashBin * | next_lowest_bin | ||
) |
Consumes inputs for the cur_path_[0] page and install snapshot pointers there.
[in,out] | installed_count | Increments the number of installed pointers |
[out] | next_lowest_bin | The smallest bin out of all remaining inputs. kInvalidHashBin if all of them are depleted. |
Definition at line 150 of file hash_composed_bins_impl.cpp.
References ASSERT_ND, foedus::storage::hash::HashBinRange::begin_, foedus::storage::hash::ComposedBin::bin_, CHECK_ERROR_CODE, cur_path_, foedus::storage::hash::HashBinRange::end_, foedus::storage::extract_snapshot_id_from_snapshot_pointer(), foedus::storage::hash::HashIntermediatePage::get_bin_range(), foedus::storage::hash::ComposedBinsBuffer::get_cur_bin(), foedus::storage::hash::HashIntermediatePage::get_level(), foedus::storage::hash::HashIntermediatePage::get_pointer_address(), foedus::storage::hash::ComposedBinsBuffer::has_more(), foedus::storage::hash::HashIntermediatePage::header(), input_count_, inputs_, foedus::storage::VolatilePagePointer::is_null(), foedus::kErrorCodeOk, foedus::storage::hash::kHashIntermediatePageFanout, foedus::storage::hash::kInvalidHashBin, foedus::storage::hash::ComposedBinsBuffer::next_bin(), foedus::storage::hash::ComposedBin::page_id_, foedus::storage::PageHeader::snapshot_, snapshot_id_, foedus::storage::DualPagePointer::snapshot_pointer_, and foedus::storage::DualPagePointer::volatile_pointer_.
ErrorCode foedus::storage::hash::ComposedBinsMergedStream::switch_path | ( | HashBin | lowest_bin, |
cache::SnapshotFileSet * | fileset, | ||
snapshot::SnapshotWriter * | writer, | ||
uint32_t * | writer_buffer_pos, | ||
uint32_t * | writer_higher_buffer_pos | ||
) |
Moves cur_path_ to a page that cotains the specified bin.
It opens higher-level pages if needed.
Definition at line 191 of file hash_composed_bins_impl.cpp.
References ASSERT_ND, cur_path_, foedus::storage::hash::kInvalidHashBin, levels_, and open_path().
PagePtr foedus::storage::hash::ComposedBinsMergedStream::cur_path_[kHashMaxLevels] |
The pages we are now composing.
cur_path_[n] is the level-n intermediate page.
Definition at line 219 of file hash_composed_bins_impl.hpp.
Referenced by init(), open_path(), process_a_bin(), and switch_path().
uint32_t foedus::storage::hash::ComposedBinsMergedStream::input_count_ |
total number of buffers in inputs_
Definition at line 213 of file hash_composed_bins_impl.hpp.
Referenced by init(), and process_a_bin().
ComposedBinsBuffer* foedus::storage::hash::ComposedBinsMergedStream::inputs_ |
Definition at line 211 of file hash_composed_bins_impl.hpp.
Referenced by init(), and process_a_bin().
std::unique_ptr< ComposedBinsBuffer[] > foedus::storage::hash::ComposedBinsMergedStream::inputs_memory_ |
just for auto release
Definition at line 209 of file hash_composed_bins_impl.hpp.
Referenced by init().
uint8_t foedus::storage::hash::ComposedBinsMergedStream::levels_ |
Definition at line 215 of file hash_composed_bins_impl.hpp.
Referenced by assure_writer_buffer(), init(), open_path(), and switch_path().
uint8_t foedus::storage::hash::ComposedBinsMergedStream::padding_ |
Definition at line 216 of file hash_composed_bins_impl.hpp.
snapshot::SnapshotId foedus::storage::hash::ComposedBinsMergedStream::snapshot_id_ |
Definition at line 214 of file hash_composed_bins_impl.hpp.
Referenced by init(), open_path(), and process_a_bin().