xapian-core
1.4.27
|
#include <chert_btreebase.h>
Public Member Functions | |
ChertTable_base () | |
Construct an object with all zero fields. More... | |
~ChertTable_base () | |
Destructor - frees resources. More... | |
bool | read (const std::string &name, char ch, bool read_bitmap, std::string &err_msg) |
Read values from a base file. More... | |
uint4 | get_revision () const |
uint4 | get_block_size () const |
uint4 | get_root () const |
uint4 | get_level () const |
uint4 | get_bit_map_size () const |
chert_tablesize_t | get_item_count () const |
uint4 | get_last_block () const |
bool | get_have_fakeroot () const |
bool | get_sequential () const |
void | set_revision (uint4 revision_) |
void | set_block_size (uint4 block_size_) |
void | set_root (uint4 root_) |
void | set_level (uint4 level_) |
void | set_item_count (chert_tablesize_t item_count_) |
void | set_have_fakeroot (bool have_fakeroot_) |
void | set_sequential (bool sequential_) |
void | write_to_file (const std::string &filename, char base_letter, const std::string &tablename, int changes_fd, const std::string *changes_tail) |
Write the btree base file to disk. More... | |
bool | block_free_at_start (uint4 n) const |
true iff block n was free at the start of the transaction on the B-tree. More... | |
void | free_block (uint4 n) |
void | mark_block (uint4 n) |
uint4 | next_free_block () |
bool | find_changed_block (uint4 *n) const |
Find the first changed block at or after position *n. More... | |
bool | block_free_now (uint4 n) const |
void | calculate_last_block () |
void | clear_bit_map () |
void | commit () |
void | swap (ChertTable_base &other) |
Private Member Functions | |
ChertTable_base (const ChertTable_base &) | |
No copying. More... | |
void | operator= (const ChertTable_base &other) |
private assignment operator - you probably want swap() instead More... | |
void | extend_bit_map () |
Private Attributes | |
uint4 | revision |
uint4 | block_size |
uint4 | root |
uint4 | level |
uint4 | bit_map_size |
chert_tablesize_t | item_count |
uint4 | last_block |
bool | have_fakeroot |
bool | sequential |
uint4 | bit_map_low |
byte offset into the bit map below which there are no free blocks More... | |
uint8_t * | bit_map0 |
the initial state of the bit map of blocks: 1 means in use, 0 means free More... | |
uint8_t * | bit_map |
the current state of the bit map of blocks More... | |
Definition at line 30 of file chert_btreebase.h.
ChertTable_base::ChertTable_base | ( | ) |
Construct an object with all zero fields.
Definition at line 74 of file chert_btreebase.cc.
Referenced by set_sequential().
ChertTable_base::~ChertTable_base | ( | ) |
Destructor - frees resources.
Definition at line 107 of file chert_btreebase.cc.
|
private |
No copying.
bool ChertTable_base::block_free_at_start | ( | uint4 | n | ) | const |
true iff block n was free at the start of the transaction on the B-tree.
Definition at line 338 of file chert_btreebase.cc.
References bit_map0.
Referenced by ChertTableCheck::check(), and set_sequential().
bool ChertTable_base::block_free_now | ( | uint4 | n | ) | const |
Definition at line 469 of file chert_btreebase.cc.
References bit_map.
Referenced by set_sequential().
void ChertTable_base::calculate_last_block | ( | ) |
Definition at line 477 of file chert_btreebase.cc.
References bit_map, bit_map_size, and last_block.
Referenced by ChertTableCheck::check(), set_sequential(), ChertTable::write_changed_blocks(), and write_to_file().
void ChertTable_base::clear_bit_map | ( | ) |
Definition at line 501 of file chert_btreebase.cc.
References bit_map, and bit_map_size.
Referenced by ChertTableCheck::check(), ChertTable::commit(), and set_sequential().
void ChertTable_base::commit | ( | ) |
Definition at line 508 of file chert_btreebase.cc.
References bit_map, bit_map0, bit_map_low, and bit_map_size.
Referenced by ChertTable::commit(), and set_sequential().
|
private |
Definition at line 390 of file chert_btreebase.cc.
References bit_map, bit_map0, BIT_MAP_INC, and bit_map_size.
Referenced by mark_block(), next_free_block(), and set_sequential().
bool ChertTable_base::find_changed_block | ( | uint4 * | n | ) | const |
Find the first changed block at or after position *n.
Returns true if such a block was found, or false otherwise.
Definition at line 451 of file chert_btreebase.cc.
References bit_map, bit_map0, and last_block.
Referenced by set_sequential(), and ChertTable::write_changed_blocks().
void ChertTable_base::free_block | ( | uint4 | n | ) |
Definition at line 351 of file chert_btreebase.cc.
References bit_map, bit_map0, and bit_map_low.
Referenced by set_sequential().
|
inline |
Definition at line 56 of file chert_btreebase.h.
References bit_map_size.
Referenced by ChertTableCheck::check().
|
inline |
Definition at line 53 of file chert_btreebase.h.
References block_size.
Referenced by ChertTable::cancel().
|
inline |
Definition at line 59 of file chert_btreebase.h.
References have_fakeroot.
Referenced by ChertTable::cancel().
|
inline |
Definition at line 57 of file chert_btreebase.h.
References item_count.
Referenced by ChertTable::cancel().
|
inline |
Definition at line 58 of file chert_btreebase.h.
References last_block.
Referenced by ChertTableCheck::check(), and ChertTable::next_for_sequential().
|
inline |
Definition at line 55 of file chert_btreebase.h.
References level.
Referenced by ChertTable::cancel().
|
inline |
Definition at line 52 of file chert_btreebase.h.
References revision.
Referenced by ChertTable::basic_open(), and ChertTable::cancel().
|
inline |
Definition at line 54 of file chert_btreebase.h.
References root.
Referenced by ChertTable::cancel().
|
inline |
Definition at line 60 of file chert_btreebase.h.
References sequential.
Referenced by ChertTable::cancel().
void ChertTable_base::mark_block | ( | uint4 | n | ) |
Definition at line 368 of file chert_btreebase.cc.
References bit_map, bit_map_low, bit_map_size, and extend_bit_map().
Referenced by ChertTableCheck::check(), and set_sequential().
uint4 ChertTable_base::next_free_block | ( | ) |
Definition at line 428 of file chert_btreebase.cc.
References bit_map, bit_map0, bit_map_low, bit_map_size, extend_bit_map(), and last_block.
Referenced by set_sequential().
|
private |
private assignment operator - you probably want swap() instead
Referenced by set_sequential().
bool ChertTable_base::read | ( | const std::string & | name, |
char | ch, | ||
bool | read_bitmap, | ||
std::string & | err_msg | ||
) |
Read values from a base file.
name | The base of the filename |
ch | The suffix |
read_bitmap | True if we should read the bitmap |
err_msg | An error string which will be appended to for some errors instead of throwing an exception. |
Definition at line 166 of file chert_btreebase.cc.
References bit_map, bit_map0, bit_map_size, block_size, CURR_FORMAT, DO_UNPACK_UINT_ERRCHECK, errno_to_string(), Xapian::Internal::format(), have_fakeroot, io_read(), item_count, last_block, level, O_CLOEXEC, posixy_open, REASONABLE_BASE_SIZE, revision, root, sequential, Xapian::Internal::str(), and unpack_uint().
Referenced by ChertTable::basic_open(), and ChertTable::cancel().
|
inline |
Definition at line 65 of file chert_btreebase.h.
References block_size.
Referenced by ChertTableCheck::check(), and ChertTable::create_and_open().
|
inline |
Definition at line 77 of file chert_btreebase.h.
References have_fakeroot.
Referenced by ChertTableCheck::check(), ChertTable::commit(), and ChertTable::create_and_open().
|
inline |
Definition at line 74 of file chert_btreebase.h.
References item_count.
Referenced by ChertTableCheck::check(), and ChertTable::commit().
|
inline |
Definition at line 71 of file chert_btreebase.h.
References level.
Referenced by ChertTableCheck::check(), and ChertTable::commit().
|
inline |
Definition at line 62 of file chert_btreebase.h.
References revision.
Referenced by ChertTableCheck::check(), ChertTable::commit(), and ChertTable::create_and_open().
|
inline |
Definition at line 68 of file chert_btreebase.h.
References root.
Referenced by ChertTableCheck::check(), and ChertTable::commit().
|
inline |
Definition at line 80 of file chert_btreebase.h.
References block_free_at_start(), block_free_now(), calculate_last_block(), ChertTable_base(), clear_bit_map(), commit(), extend_bit_map(), find_changed_block(), free_block(), mark_block(), next_free_block(), operator=(), sequential, swap(), and write_to_file().
Referenced by ChertTableCheck::check(), ChertTable::commit(), and ChertTable::create_and_open().
void ChertTable_base::swap | ( | ChertTable_base & | other | ) |
Definition at line 91 of file chert_btreebase.cc.
References bit_map, bit_map0, bit_map_low, bit_map_size, block_size, have_fakeroot, item_count, last_block, level, revision, root, and sequential.
Referenced by set_sequential().
void ChertTable_base::write_to_file | ( | const std::string & | filename, |
char | base_letter, | ||
const std::string & | tablename, | ||
int | changes_fd, | ||
const std::string * | changes_tail | ||
) |
Write the btree base file to disk.
Definition at line 279 of file chert_btreebase.cc.
References bit_map, bit_map_size, block_size, calculate_last_block(), CURR_FORMAT, errno_to_string(), have_fakeroot, io_sync(), io_write(), item_count, last_block, level, O_CLOEXEC, pack_string(), pack_uint(), posixy_open, revision, root, and sequential.
Referenced by ChertTableCheck::check(), ChertTable::commit(), ChertTable::create_and_open(), and set_sequential().
|
private |
the current state of the bit map of blocks
Definition at line 150 of file chert_btreebase.h.
Referenced by block_free_now(), calculate_last_block(), clear_bit_map(), commit(), extend_bit_map(), find_changed_block(), free_block(), mark_block(), next_free_block(), read(), swap(), write_to_file(), and ~ChertTable_base().
|
private |
the initial state of the bit map of blocks: 1 means in use, 0 means free
Definition at line 147 of file chert_btreebase.h.
Referenced by block_free_at_start(), commit(), extend_bit_map(), find_changed_block(), free_block(), next_free_block(), read(), swap(), and ~ChertTable_base().
|
private |
byte offset into the bit map below which there are no free blocks
Definition at line 143 of file chert_btreebase.h.
Referenced by commit(), free_block(), mark_block(), next_free_block(), and swap().
|
private |
Definition at line 134 of file chert_btreebase.h.
Referenced by calculate_last_block(), clear_bit_map(), commit(), extend_bit_map(), get_bit_map_size(), mark_block(), next_free_block(), read(), swap(), and write_to_file().
|
private |
Definition at line 131 of file chert_btreebase.h.
Referenced by get_block_size(), read(), set_block_size(), swap(), and write_to_file().
|
private |
Definition at line 137 of file chert_btreebase.h.
Referenced by get_have_fakeroot(), read(), set_have_fakeroot(), swap(), and write_to_file().
|
private |
Definition at line 135 of file chert_btreebase.h.
Referenced by get_item_count(), read(), set_item_count(), swap(), and write_to_file().
|
private |
Definition at line 136 of file chert_btreebase.h.
Referenced by calculate_last_block(), find_changed_block(), get_last_block(), next_free_block(), read(), swap(), and write_to_file().
|
private |
Definition at line 133 of file chert_btreebase.h.
Referenced by get_level(), read(), set_level(), swap(), and write_to_file().
|
private |
Definition at line 130 of file chert_btreebase.h.
Referenced by get_revision(), read(), set_revision(), swap(), and write_to_file().
|
private |
Definition at line 132 of file chert_btreebase.h.
Referenced by get_root(), read(), set_root(), swap(), and write_to_file().
|
private |
Definition at line 138 of file chert_btreebase.h.
Referenced by get_sequential(), read(), set_sequential(), swap(), and write_to_file().