Fairport  v1.0.38
fairport::data_block Class Reference

A block which represents end user data. More...

#include <node.h>

+ Inheritance diagram for fairport::data_block:
+ Collaboration diagram for fairport::data_block:

List of all members.

Public Member Functions

 data_block (const shared_db_ptr &db, const block_info &info, size_t total_size)
 Constructor for a data_block.
virtual ~data_block ()
size_t read (std::vector< byte > &buffer, ulong offset) const
 Read data from this block.
template<typename T >
read (ulong offset) const
 Read data from this block.
virtual size_t read_raw (byte *pdest_buffer, size_t size, ulong offset) const =0
 Read data from this block.
virtual uint get_page_count () const =0
 Get the number of physical pages in this data_block.
virtual std::tr1::shared_ptr
< external_block
get_page (uint page_num) const =0
 Get a specific page of this data_block.
size_t get_total_size () const
 Get the total logical size of this block.

Protected Attributes

size_t m_total_size
 the total or logical size (sum of all external child blocks)

Detailed Description

A block which represents end user data.

This class is the base class of both extended_block and external_block. This base class exists to abstract away their differences, so a node can treat a given block (be it extended or external) simply as a stream of bytes.

Definition at line 486 of file node.h.


Constructor & Destructor Documentation

fairport::data_block::data_block ( const shared_db_ptr db,
const block_info info,
size_t  total_size 
) [inline]

Constructor for a data_block.

Parameters:
[in]dbThe database context
[in]infoInformation about this block
[in]total_sizeThe total logical size of this block

Definition at line 493 of file node.h.

virtual fairport::data_block::~data_block ( ) [inline, virtual]

Definition at line 495 of file node.h.


Member Function Documentation

virtual std::tr1::shared_ptr<external_block> fairport::data_block::get_page ( uint  page_num) const [pure virtual]

Get a specific page of this data_block.

Note:
In this context, "page" refers to an external_block
Exceptions:
out_of_rangeIf page_num >= get_page_count()
Parameters:
[in]page_numThe ordinal of the external_block to get, zero based
Returns:
The requested external_block

Implemented in fairport::external_block, and fairport::extended_block.

virtual uint fairport::data_block::get_page_count ( ) const [pure virtual]

Get the number of physical pages in this data_block.

Note:
In this context, "page" refers to an external_block
Returns:
The total number of external_blocks under this data_block

Implemented in fairport::external_block, and fairport::extended_block.

size_t fairport::data_block::get_total_size ( ) const [inline]

Get the total logical size of this block.

Returns:
The total logical size of this block

Definition at line 535 of file node.h.

size_t fairport::data_block::read ( std::vector< byte > &  buffer,
ulong  offset 
) const [inline]

Read data from this block.

Fills the specified buffer with data starting at the specified offset. The size of the buffer indicates how much data to read.

Parameters:
[in,out]bufferThe buffer to fill
[in]offsetThe location to read from
Returns:
The amount of data read

Definition at line 895 of file node.h.

template<typename T >
T fairport::data_block::read ( ulong  offset) const [inline]

Read data from this block.

Returns a "T" located as the specified offset

Template Parameters:
TThe type to read
Parameters:
[in]offsetThe location to read from
Returns:
The type read

Definition at line 911 of file node.h.

virtual size_t fairport::data_block::read_raw ( byte pdest_buffer,
size_t  size,
ulong  offset 
) const [pure virtual]

Read data from this block.

Parameters:
[out]pdest_bufferThe location to read the data into
[in]sizeThe amount of data to read
[in]offsetThe location to read from
Returns:
The amount of data read

Implemented in fairport::external_block, and fairport::extended_block.


Member Data Documentation

the total or logical size (sum of all external child blocks)

Definition at line 538 of file node.h.


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