Public Member Functions | Private Attributes

TAO_Notify::Persistent_Storage_Block Class Reference

A class to represent a block on disk. More...

#include <Persistent_File_Allocator.h>

Collaboration diagram for TAO_Notify::Persistent_Storage_Block:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 Persistent_Storage_Block (const size_t block_number, const size_t block_size)
 The constructor. Initializes the callback to NULL.
 Persistent_Storage_Block (const Persistent_Storage_Block &psb)
 The copy constructor. Makes a deep copy of the passed in PSB.
 ~Persistent_Storage_Block ()
 The destructor.
void set_no_write ()
bool get_no_write ()
 Find out whether we have data to be written.
void set_sync ()
 Set our block to be written as a near-atomic operation.
bool get_sync () const
 Find out whether this block should be written near-atomically.
size_t block_number () const
 Find out our physical block number.
unsigned char * data () const
 Return our data to the user.
void reassign_data (unsigned char *newptr, bool delete_old=false)
 Set our data pointer, and optionally delete it.
size_t detach ()
 Return block number and relinquish ownership.
void set_callback (Persistent_Callback *callback)
 Set our callback.
Persistent_Callbackget_callback () const
 Get our callback.
void set_allocator_owns (bool allocator_owns=true)
 Set ownership of this PSB.
bool get_allocator_owns () const
 Get ownership status of this PSB.

Private Attributes

unsigned char * data_
 Our raw data.
size_t block_number_
 The block number corresponding to our data.
bool no_write_
 Are we a no-op with just a callback?
bool sync_
 Write in near-atomic fashion.
size_t block_size_
 The size of our block.
Persistent_Callbackcallback_
bool allocator_owns_
 Does the allocator obtain ownership of our block?

Detailed Description

A class to represent a block on disk.

Contains the raw data to be written on disk as well as positioning information, synchronization information, and a pointer to a callback.

Definition at line 56 of file Persistent_File_Allocator.h.


Constructor & Destructor Documentation

TAO_Notify::Persistent_Storage_Block::Persistent_Storage_Block ( const size_t  block_number,
const size_t  block_size 
)

The constructor. Initializes the callback to NULL.

Definition at line 22 of file Persistent_File_Allocator.cpp.

  : block_number_(block_number)
  , no_write_(false)
  , sync_(false)
  , block_size_(block_size)
  , callback_(0)
  , allocator_owns_(true)
{
  ACE_NEW(this->data_, unsigned char[this->block_size_]);
  ACE_OS::memset(this->data_, 0, this->block_size_);

}

TAO_Notify::Persistent_Storage_Block::Persistent_Storage_Block ( const Persistent_Storage_Block psb  ) 

The copy constructor. Makes a deep copy of the passed in PSB.

Definition at line 36 of file Persistent_File_Allocator.cpp.

  : block_number_(psb.block_number_)
  , no_write_(psb.no_write_)
  , sync_(psb.sync_)
  , block_size_(psb.block_size_)
  , callback_(psb.callback_)
  , allocator_owns_(psb.allocator_owns_)
{
  ACE_NEW(this->data_, unsigned char[this->block_size_]);
  ACE_OS::memcpy(this->data_, psb.data(), this->block_size_);
}

TAO_Notify::Persistent_Storage_Block::~Persistent_Storage_Block (  ) 

The destructor.

Definition at line 49 of file Persistent_File_Allocator.cpp.

{
  delete [] this->data_;
  this->data_ = 0;
}


Member Function Documentation

size_t TAO_Notify::Persistent_Storage_Block::block_number (  )  const

Find out our physical block number.

Definition at line 81 of file Persistent_File_Allocator.cpp.

{
  return this->block_number_;
}

unsigned char * TAO_Notify::Persistent_Storage_Block::data ( void   )  const

Return our data to the user.

Definition at line 87 of file Persistent_File_Allocator.cpp.

{
  return this->data_;
}

size_t TAO_Notify::Persistent_Storage_Block::detach (  ) 

Return block number and relinquish ownership.

bool TAO_Notify::Persistent_Storage_Block::get_allocator_owns (  )  const

Get ownership status of this PSB.

Definition at line 122 of file Persistent_File_Allocator.cpp.

{
  return this->allocator_owns_;
}

Persistent_Callback * TAO_Notify::Persistent_Storage_Block::get_callback (  )  const

Get our callback.

Definition at line 110 of file Persistent_File_Allocator.cpp.

{
  return this->callback_;
}

bool TAO_Notify::Persistent_Storage_Block::get_no_write (  ) 

Find out whether we have data to be written.

Definition at line 63 of file Persistent_File_Allocator.cpp.

{
  return this->no_write_;
}

bool TAO_Notify::Persistent_Storage_Block::get_sync (  )  const

Find out whether this block should be written near-atomically.

Definition at line 75 of file Persistent_File_Allocator.cpp.

{
  return this->sync_;
}

void TAO_Notify::Persistent_Storage_Block::reassign_data ( unsigned char *  newptr,
bool  delete_old = false 
)

Set our data pointer, and optionally delete it.

Definition at line 93 of file Persistent_File_Allocator.cpp.

{
  if (delete_old)
  {
    delete [] this->data_;
  }
  this->data_ = newptr;
}

void TAO_Notify::Persistent_Storage_Block::set_allocator_owns ( bool  allocator_owns = true  ) 

Set ownership of this PSB.

Definition at line 116 of file Persistent_File_Allocator.cpp.

{
  this->allocator_owns_ = allocator_owns;
}

void TAO_Notify::Persistent_Storage_Block::set_callback ( Persistent_Callback callback  ) 

Set our callback.

Definition at line 104 of file Persistent_File_Allocator.cpp.

{
  this->callback_ = callback;
}

void TAO_Notify::Persistent_Storage_Block::set_no_write (  ) 

Set our block to not have any data at all - a no-op. This can be used to implement a checkpoint in the write stream.

Definition at line 56 of file Persistent_File_Allocator.cpp.

{
  this->no_write_ = true;
  this->reassign_data(0, true);
}

void TAO_Notify::Persistent_Storage_Block::set_sync (  ) 

Set our block to be written as a near-atomic operation.

Definition at line 69 of file Persistent_File_Allocator.cpp.

{
  this->sync_ = true;
}


Member Data Documentation

Does the allocator obtain ownership of our block?

Definition at line 115 of file Persistent_File_Allocator.h.

The block number corresponding to our data.

Definition at line 104 of file Persistent_File_Allocator.h.

The size of our block.

Definition at line 110 of file Persistent_File_Allocator.h.

Our optional callback function, to be used in such things as state transitions.

Definition at line 113 of file Persistent_File_Allocator.h.

Our raw data.

Definition at line 102 of file Persistent_File_Allocator.h.

Are we a no-op with just a callback?

Definition at line 106 of file Persistent_File_Allocator.h.

Write in near-atomic fashion.

Definition at line 108 of file Persistent_File_Allocator.h.


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