Fairport
v1.0.38
|
A data block which refers to other data blocks, in order to extend the physical size limit (8k) to a larger logical size. More...
#include <node.h>
Public Member Functions | |
extended_block (const shared_db_ptr &db, const block_info &info, ushort level, size_t total_size, size_t child_max_total_size, ulong page_max_count, ulong child_page_max_count, std::vector< block_id > bi) | |
Construct an extended_block from disk. | |
size_t | read_raw (byte *pdest_buffer, size_t size, ulong offset) const |
Read data from this block. | |
uint | get_page_count () const |
Get the number of physical pages in this data_block. | |
std::tr1::shared_ptr < external_block > | get_page (uint page_num) const |
Get a specific page of this data_block. | |
ushort | get_level () const |
Get the "level" of this extended_block. | |
bool | is_internal () const |
Returns the blocks internal/external state. |
A data block which refers to other data blocks, in order to extend the physical size limit (8k) to a larger logical size.
An extended_block is essentially a list of block_ids of other data_block, which themselves may be an extended_block or an external_block. Ultimately they form a "data tree", the leafs of which form the "logical" contents of the block.
This class is an in memory representation of the disk::extended_block structure.
fairport::extended_block::extended_block | ( | const shared_db_ptr & | db, |
const block_info & | info, | ||
ushort | level, | ||
size_t | total_size, | ||
size_t | child_max_total_size, | ||
ulong | page_max_count, | ||
ulong | child_page_max_count, | ||
std::vector< block_id > | bi | ||
) | [inline] |
Construct an extended_block from disk.
[in] | db | The database context |
[in] | info | Information about this block |
[in] | level | The level of this extended block (1 or 2) |
[in] | total_size | The total logical size of this block |
[in] | child_max_total_size | The maximum logical size of a child block |
[in] | page_max_count | The maximum number of external blocks that can be contained in this block |
[in] | child_page_max_count | The maximum number of external blocks that can be contained in a child block |
[in] | bi | The block_info for all child blocks |
ushort fairport::extended_block::get_level | ( | ) | const [inline] |
Get the "level" of this extended_block.
A level 1 extended_block (or "xblock") points to external blocks. A level 2 extended_block (or "xxblock") points to other extended_blocks
std::tr1::shared_ptr< fairport::external_block > fairport::extended_block::get_page | ( | uint | page_num | ) | const [inline, virtual] |
Get a specific page of this data_block.
out_of_range | If page_num >= get_page_count() |
[in] | page_num | The ordinal of the external_block to get, zero based |
Implements fairport::data_block.
fairport::uint fairport::extended_block::get_page_count | ( | ) | const [inline, virtual] |
Get the number of physical pages in this data_block.
Implements fairport::data_block.
bool fairport::extended_block::is_internal | ( | ) | const [inline, virtual] |
Returns the blocks internal/external state.
Implements fairport::block.
size_t fairport::extended_block::read_raw | ( | byte * | pdest_buffer, |
size_t | size, | ||
ulong | offset | ||
) | const [inline, virtual] |
Read data from this block.
[out] | pdest_buffer | The location to read the data into |
[in] | size | The amount of data to read |
[in] | offset | The location to read from |
Implements fairport::data_block.