RAM cached and tiled raster band blocks manager. More...
#include <CachedBandBlocksManager.h>
  
 Classes | |
| class | BlockIndex | 
| Internal blocks indexes.  More... | |
| class | ThreadParameters | 
| Internal read/write thread execution parameters.  More... | |
Public Member Functions | |
| CachedBandBlocksManager () | |
| void | free () | 
| void * | getBlockPointer (unsigned int band, unsigned int x, unsigned int y) | 
| Returns a pointer to the required data block.  More... | |
| unsigned int | getDataPrefetchThreshold () const | 
| The read-ahead data prefetch threshold.  More... | |
| unsigned int | getMaxNumberOfCacheBlocks () const | 
| The maximum number of cache blocks.  More... | |
| te::rst::Raster * | getRaster () const | 
| Returns the associated raster.  More... | |
| bool | initialize (const te::rst::Raster &externalRaster, const unsigned char maxMemPercentUsed, const unsigned int dataPrefetchThreshold) | 
| Initialize this instance to an initial state.  More... | |
| bool | initialize (const unsigned int maxNumberOfCacheBlocks, const te::rst::Raster &externalRaster, const unsigned int dataPrefetchThreshold) | 
| Initialize this instance to an initial state.  More... | |
| bool | isInitialized () const | 
| Returns true if this instance is initialized.  More... | |
| ~CachedBandBlocksManager () | |
Static Protected Member Functions | |
| static void | threadEntry (ThreadParameters *paramsPtr) | 
| Thread entry.  More... | |
Protected Attributes | |
| std::vector< BlockIndex > | m_blocksFifo | 
| blocks swap FIFO.  More... | |
| unsigned int | m_blocksFifoNextSwapBlockIndex | 
| The next block swapp index over m_blocksFifo.  More... | |
| std::vector< unsigned char * > | m_blocksHandler | 
| Cache blocks handler.  More... | |
| std::vector< std::vector < std::vector< unsigned char * > > >  | m_blocksPointers | 
| 3D Matrix of block pointers indexed as [band][blockYIndex][blockXIndex].  More... | |
| unsigned int | m_dataPrefetchThreshold | 
| The read-ahead data prefetch threshold (0-will disable prefetch, 1-data always prefetched, higher values will do prefetch when necessary).  More... | |
| unsigned char * | m_getBlockPointer_BlkPtr | 
| unsigned int | m_globalBlockSizeBytes | 
| The maximum block size for all bands.  More... | |
| unsigned int | m_globalBlocksNumberX | 
| The maximum number of blocks (X axis) for all bands.  More... | |
| unsigned int | m_globalBlocksNumberY | 
| The maximum number of blocks (Y axis) for all bands.  More... | |
| unsigned int | m_maxNumberOfCacheBlocks | 
| The maximum number of cache blocks.  More... | |
| te::rst::Raster * | m_rasterPtr | 
| External raster pointer.  More... | |
| std::auto_ptr< boost::thread > | m_threadHandler | 
| The internal thread handler.  More... | |
| ThreadParameters | m_threadParams | 
| The internal thread execution parameters.  More... | |
Private Member Functions | |
| void | initState () | 
| Initialize this instance to an initial state.  More... | |
RAM cached and tiled raster band blocks manager.
Definition at line 51 of file CachedBandBlocksManager.h.
| te::mem::CachedBandBlocksManager::CachedBandBlocksManager | ( | ) | 
Definition at line 47 of file CachedBandBlocksManager.cpp.
| te::mem::CachedBandBlocksManager::~CachedBandBlocksManager | ( | ) | 
Definition at line 52 of file CachedBandBlocksManager.cpp.
| void te::mem::CachedBandBlocksManager::free | ( | ) | 
Definition at line 156 of file CachedBandBlocksManager.cpp.
References te::common::WAccess.
| void * te::mem::CachedBandBlocksManager::getBlockPointer | ( | unsigned int | band, | 
| unsigned int | x, | ||
| unsigned int | y | ||
| ) | 
Returns a pointer to the required data block.
| band | The band index. | 
| x | The block-id in x (or x-offset). | 
| y | The block-id in y (or y-offset). | 
Definition at line 223 of file CachedBandBlocksManager.cpp.
References te::mem::CachedBandBlocksManager::BlockIndex::m_b, te::mem::CachedBandBlocksManager::BlockIndex::m_x, te::mem::CachedBandBlocksManager::BlockIndex::m_y, and te::common::WAccess.
      
  | 
  inline | 
The read-ahead data prefetch threshold.
Definition at line 129 of file CachedBandBlocksManager.h.
      
  | 
  inline | 
The maximum number of cache blocks.
Definition at line 123 of file CachedBandBlocksManager.h.
      
  | 
  inline | 
Returns the associated raster.
Definition at line 117 of file CachedBandBlocksManager.h.
Referenced by te::mem::CachedBand::CachedBand().
| bool te::mem::CachedBandBlocksManager::initialize | ( | const te::rst::Raster & | externalRaster, | 
| const unsigned char | maxMemPercentUsed, | ||
| const unsigned int | dataPrefetchThreshold | ||
| ) | 
Initialize this instance to an initial state.
| externalRaster | The external raster where the data will be read/written. | 
| maxMemPercentUsed | The maximum free memory percentual to use valid range: [1:100]. | 
| dataPrefetchThreshold | The read-ahead data prefetch threshold (0-will disable prefetch, 1-data always prefetched, higher values will do prefetch when necessary). | 
Definition at line 57 of file CachedBandBlocksManager.cpp.
References te::rst::Raster::getBand(), te::mem::Band::getBlockSize(), te::rst::Raster::getNumberOfBands(), te::common::GetTotalPhysicalMemory(), te::common::GetTotalVirtualMemory(), and te::common::GetUsedVirtualMemory().
Referenced by te::mem::CachedRaster::CachedRaster().
| bool te::mem::CachedBandBlocksManager::initialize | ( | const unsigned int | maxNumberOfCacheBlocks, | 
| const te::rst::Raster & | externalRaster, | ||
| const unsigned int | dataPrefetchThreshold | ||
| ) | 
Initialize this instance to an initial state.
| externalRaster | The external raster where the data will be read/written. | 
| maxNumberOfCacheBlocks | The maximum number of cache blocks. | 
| dataPrefetchThreshold | The read-ahead data prefetch threshold (0-will disable prefetch, 1-data always prefetched, higher values will do prefetch when necessary). | 
Definition at line 86 of file CachedBandBlocksManager.cpp.
References te::rst::Raster::getBand(), te::mem::Band::getBlockSize(), te::rst::Raster::getNumberOfBands(), te::rst::Band::getProperty(), te::rst::BandProperty::m_nblocksx, and te::rst::BandProperty::m_nblocksy.
      
  | 
  private | 
Initialize this instance to an initial state.
Definition at line 35 of file CachedBandBlocksManager.cpp.
References m_blocksFifoNextSwapBlockIndex, m_dataPrefetchThreshold, m_getBlockPointer_BlkPtr, m_globalBlockSizeBytes, m_globalBlocksNumberX, m_globalBlocksNumberY, m_maxNumberOfCacheBlocks, and m_rasterPtr.
      
  | 
  inline | 
Returns true if this instance is initialized.
Definition at line 94 of file CachedBandBlocksManager.h.
      
  | 
  staticprotected | 
Thread entry.
| paramsPtr | A pointer to the thread parameters. | 
Definition at line 355 of file CachedBandBlocksManager.cpp.
References te::rst::Raster::getBand(), te::rst::Raster::getNumberOfBands(), te::rst::Band::getProperty(), te::mem::CachedBandBlocksManager::ThreadParameters::m_blockB, te::mem::CachedBandBlocksManager::ThreadParameters::m_blockPtr, te::mem::CachedBandBlocksManager::ThreadParameters::m_blockX, te::mem::CachedBandBlocksManager::ThreadParameters::m_blockY, te::mem::CachedBandBlocksManager::ThreadParameters::m_dataPrefetchThreshold, te::mem::CachedBandBlocksManager::ThreadParameters::m_doTaskCondVar, te::mem::CachedBandBlocksManager::ThreadParameters::m_doTaskMutex, te::mem::CachedBandBlocksManager::ThreadParameters::m_exchangeBlockPtr, te::rst::BandProperty::m_nblocksx, te::rst::BandProperty::m_nblocksy, te::mem::CachedBandBlocksManager::ThreadParameters::m_rasterPtr, te::mem::CachedBandBlocksManager::ThreadParameters::m_task, te::mem::CachedBandBlocksManager::ThreadParameters::m_taskFinished, te::mem::CachedBandBlocksManager::ThreadParameters::m_taskFinishedCondVar, te::mem::CachedBandBlocksManager::ThreadParameters::m_taskFinishedMutex, te::mem::CachedBandBlocksManager::ThreadParameters::m_threadDataBlockHandler, te::mem::Band::read(), and te::mem::Band::write().
      
  | 
  protected | 
blocks swap FIFO.
Definition at line 241 of file CachedBandBlocksManager.h.
      
  | 
  protected | 
The next block swapp index over m_blocksFifo.
Definition at line 232 of file CachedBandBlocksManager.h.
Referenced by initState().
      
  | 
  protected | 
Cache blocks handler.
Definition at line 239 of file CachedBandBlocksManager.h.
      
  | 
  protected | 
3D Matrix of block pointers indexed as [band][blockYIndex][blockXIndex].
Definition at line 237 of file CachedBandBlocksManager.h.
      
  | 
  protected | 
The read-ahead data prefetch threshold (0-will disable prefetch, 1-data always prefetched, higher values will do prefetch when necessary).
Definition at line 222 of file CachedBandBlocksManager.h.
Referenced by initState().
      
  | 
  protected | 
Definition at line 235 of file CachedBandBlocksManager.h.
Referenced by initState().
      
  | 
  protected | 
The maximum block size for all bands.
Definition at line 228 of file CachedBandBlocksManager.h.
Referenced by initState().
      
  | 
  protected | 
The maximum number of blocks (X axis) for all bands.
Definition at line 224 of file CachedBandBlocksManager.h.
Referenced by initState().
      
  | 
  protected | 
The maximum number of blocks (Y axis) for all bands.
Definition at line 226 of file CachedBandBlocksManager.h.
Referenced by initState().
      
  | 
  protected | 
The maximum number of cache blocks.
Definition at line 230 of file CachedBandBlocksManager.h.
Referenced by initState().
      
  | 
  protected | 
External raster pointer.
Definition at line 220 of file CachedBandBlocksManager.h.
Referenced by initState().
      
  | 
  protected | 
The internal thread handler.
Definition at line 245 of file CachedBandBlocksManager.h.
      
  | 
  protected | 
The internal thread execution parameters.
Definition at line 243 of file CachedBandBlocksManager.h.