Public Types | Public Member Functions | Public Attributes

TAO_Notify::Routing_Slip_Persistence_Manager::Block_Header Class Reference

private: Storage for header information of all persistent block. More...

Inheritance diagram for TAO_Notify::Routing_Slip_Persistence_Manager::Block_Header:
Inheritance graph
[legend]

List of all members.

Public Types

enum  Header_Type { BT_Routing_Slip, BT_Event, BT_Overflow }

Public Member Functions

 Block_Header (Header_Type type)
virtual ~Block_Header (void)
virtual size_t extract_header (Persistent_Storage_Block &psb, size_t offset=0)
virtual size_t put_header (Persistent_Storage_Block &psb, size_t offset=0)

Public Attributes

Block_Serial_Number serial_number
 Our serial number.
Block_Number next_overflow
 Address of the overflow record (if any).
Block_Type header_type
 How much extra header data is in this block (not including this header).
Block_Size data_size
 How much actual data is in this block? (not including headers).

Detailed Description

private: Storage for header information of all persistent block.

Definition at line 126 of file Routing_Slip_Persistence_Manager.h.


Member Enumeration Documentation

Enumerator:
BT_Routing_Slip 
BT_Event 
BT_Overflow 

Definition at line 129 of file Routing_Slip_Persistence_Manager.h.

                     {
      BT_Routing_Slip,
      BT_Event,
      BT_Overflow
      };


Constructor & Destructor Documentation

TAO_Notify::Routing_Slip_Persistence_Manager::Block_Header::Block_Header ( Header_Type  type  ) 

Definition at line 268 of file Routing_Slip_Persistence_Manager.cpp.

TAO_Notify::Routing_Slip_Persistence_Manager::Block_Header::~Block_Header ( void   )  [virtual]

Definition at line 275 of file Routing_Slip_Persistence_Manager.cpp.

  : serial_number (0)
  , next_overflow(0)
  , header_type (static_cast<Block_Type> (type))


Member Function Documentation

size_t TAO_Notify::Routing_Slip_Persistence_Manager::Block_Header::extract_header ( Persistent_Storage_Block psb,
size_t  offset = 0 
) [virtual]

Reimplemented in TAO_Notify::Routing_Slip_Persistence_Manager::Routing_Slip_Header.

Definition at line 280 of file Routing_Slip_Persistence_Manager.cpp.

{
}

size_t
Routing_Slip_Persistence_Manager::Block_Header::extract_header(
  Persistent_Storage_Block& psb, size_t offset)
{
  size_t pos = offset;
  unsigned char* data = psb.data();

  serial_number = data[pos++];
  serial_number = (serial_number << 8) + data[pos++];
  serial_number = (serial_number << 8) + data[pos++];
  serial_number = (serial_number << 8) + data[pos++];
  serial_number = (serial_number << 8) + data[pos++];
  serial_number = (serial_number << 8) + data[pos++];
  serial_number = (serial_number << 8) + data[pos++];
  serial_number = (serial_number << 8) + data[pos++];

  next_overflow = data[pos++];
  next_overflow = (next_overflow << 8) + data[pos++];
  next_overflow = (next_overflow << 8) + data[pos++];
  next_overflow = (next_overflow << 8) + data[pos++];

  header_type = data[pos++];

size_t TAO_Notify::Routing_Slip_Persistence_Manager::Block_Header::put_header ( Persistent_Storage_Block psb,
size_t  offset = 0 
) [virtual]

Reimplemented in TAO_Notify::Routing_Slip_Persistence_Manager::Routing_Slip_Header.

Definition at line 309 of file Routing_Slip_Persistence_Manager.cpp.

{
  // Assume that our psb can hold our small amount of data...
  size_t pos = offset;
  unsigned char* data = psb.data();
  // Store serial_number
  data[pos++] = static_cast<unsigned char> ((serial_number >> 56) & 0xff);
  data[pos++] = static_cast<unsigned char> ((serial_number >> 48) & 0xff);
  data[pos++] = static_cast<unsigned char> ((serial_number >> 40) & 0xff);
  data[pos++] = static_cast<unsigned char> ((serial_number >> 32) & 0xff);
  data[pos++] = static_cast<unsigned char> ((serial_number >> 24) & 0xff);
  data[pos++] = static_cast<unsigned char> ((serial_number >> 16) & 0xff);
  data[pos++] = static_cast<unsigned char> ((serial_number >> 8) & 0xff);
  data[pos++] = static_cast<unsigned char> ((serial_number >> 0) & 0xff);
  // Store next_overflow
  data[pos++] = static_cast<unsigned char> (next_overflow >> 24);
  data[pos++] = static_cast<unsigned char> ((next_overflow >> 16) & 0xff);
  data[pos++] = static_cast<unsigned char> ((next_overflow >> 8) & 0xff);
  data[pos++] = static_cast<unsigned char> (next_overflow & 0xff);
  // Store header_type
  data[pos++] = static_cast<unsigned char> ((header_type >> 8) & 0xff);
  data[pos++] = static_cast<unsigned char> (header_type & 0xff);


Member Data Documentation

How much actual data is in this block? (not including headers).

Definition at line 150 of file Routing_Slip_Persistence_Manager.h.

How much extra header data is in this block (not including this header).

Definition at line 148 of file Routing_Slip_Persistence_Manager.h.

Address of the overflow record (if any).

Definition at line 146 of file Routing_Slip_Persistence_Manager.h.

Our serial number.

Definition at line 144 of file Routing_Slip_Persistence_Manager.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines