creaImageIO::MultiThreadImageReader Class Reference

Class that allows parallel lectures of several images. More...

#include <creaImageIOMultiThreadImageReader.h>

Inheritance diagram for creaImageIO::MultiThreadImageReader:

Inheritance graph
[legend]
Collaboration diagram for creaImageIO::MultiThreadImageReader:

Collaboration graph
[legend]

List of all members.

Public Types

enum  EventType {
  ThreadedReaderStarted, ThreadedReaderStopped, ImageLoaded, ImageUnloaded,
  Error
}

Public Member Functions

 MultiThreadImageReader (int number_of_threads=1)
 Ctor with the number of threads to use.
 ~MultiThreadImageReader ()
 Dtor.
bool Start ()
void Stop ()
 Stops the reader = stops the threads and delete the images loaded.
void Request (MultiThreadImageReaderUser *user, const std::string &filename, int priority)
vtkImageData * GetImage (const std::string &filename)
 (no user callback but image returned)
int GetMaximalPriority ()
void OnMultiThreadImageReaderEvent (const std::string &filename, EventType type, vtkImageData *image)
void MultiThreadImageReaderEventLock ()
void MultiThreadImageReaderEventUnlock ()
wxMutex & GetMultiThreadImageReaderUserMutex ()

Protected Types

typedef ImageToLoadImageToLoadPtr
 Type of pointer on an ImageToLoad struct.
typedef std::map
< ImageToLoadPtr,
vtkImageData *,
ImageToLoadPtrFilenameComparator
ImageMapType
 The type of map of images.
typedef std::vector
< ThreadedImageReader * > 
ThreadedImageReaderListType
 The type of list of threaded readers.

Protected Member Functions

int GetMaximalPriorityWithoutLocking ()
void SignalImageRead (ImageToLoadPtr p, bool purge)
 The callback from threaded readers when an image is read.
void UpdateUnloadPriority (ImageToLoadPtr p, int priority)

Protected Attributes

ImageMapType mImages
 The map of images.
ImageToLoadPtrPriorityComparator mComparator
 Comparator for the image to load queue.
ImageToLoadPtrIndexer mIndexer
 Indexer for the image to load queue.
IndexedHeap
< ImageToLoadPtr,
ImageToLoadPtrPriorityComparator,
ImageToLoadPtrIndexer
mQueue
 The image to load priority queue.
ThreadedImageReaderListType mThreadedImageReaderList
int mNumberOfThreadedReadersRunning
 The number of currently running threaded readers.
std::string mRequestedFilename
 For GetImage : the filename requested.
vtkImageData * mRequestedImage
 For GetImage : the image requested.
ImageReadermReader
 If number of threads == 0 then uses an internal non-threaded reader.
IndexedHeap
< ImageToLoadPtr,
ImageToLoadPtrInversePriorityComparator,
ImageToUnloadPtrIndexer
mUnloadQueue
 The image to unload priority queue.
long mTotalMem
long mTotalMemMax

Friends

class ThreadedImageReader
class MultiThreadImageReader

Classes

class  ImageToLoad
 Class that represents an image to be loaded. More...
struct  ImageToLoadPtrFilenameComparator
 ImageToLoadPtr comparator on filename (for image map). More...
struct  ImageToLoadPtrIndexer
 ImageToLoadPtr indexer for image queue. More...
struct  ImageToLoadPtrInversePriorityComparator
 ImageToLoadPtr comparator on inverse priority (for image to unload queue). More...
struct  ImageToLoadPtrPriorityComparator
 ImageToLoadPtr comparator on priority (for image queue). More...
struct  ImageToUnloadPtrIndexer
 ImageToLoadPtr indexer for to unload image queue. More...


Detailed Description

Class that allows parallel lectures of several images.

TAKE CARE : For the moment it only supports a **SINGLE USER**

Definition at line 71 of file creaImageIOMultiThreadImageReader.h.


Member Typedef Documentation

typedef ImageToLoad* creaImageIO::MultiThreadImageReader::ImageToLoadPtr [protected]

Type of pointer on an ImageToLoad struct.

Definition at line 151 of file creaImageIOMultiThreadImageReader.h.

typedef std::map<ImageToLoadPtr,vtkImageData*, ImageToLoadPtrFilenameComparator> creaImageIO::MultiThreadImageReader::ImageMapType [protected]

The type of map of images.

Definition at line 199 of file creaImageIOMultiThreadImageReader.h.

typedef std::vector<ThreadedImageReader*> creaImageIO::MultiThreadImageReader::ThreadedImageReaderListType [protected]

The type of list of threaded readers.

Definition at line 212 of file creaImageIOMultiThreadImageReader.h.


Member Enumeration Documentation

enum creaImageIO::MultiThreadImageReaderUser::EventType [inherited]

Enumerator:
ThreadedReaderStarted 
ThreadedReaderStopped 
ImageLoaded 
ImageUnloaded 
Error 

Reimplemented in creaImageIO::WxGimmickView.

Definition at line 32 of file creaImageIOMultiThreadImageReader.h.

00033       {
00034         ThreadedReaderStarted,
00035         ThreadedReaderStopped,
00036         ImageLoaded,
00037         ImageUnloaded,
00038         Error
00039       }


Constructor & Destructor Documentation

creaImageIO::MultiThreadImageReader::MultiThreadImageReader ( int  number_of_threads = 1  ) 

Ctor with the number of threads to use.

creaImageIO::MultiThreadImageReader::~MultiThreadImageReader (  ) 

Dtor.


Member Function Documentation

bool creaImageIO::MultiThreadImageReader::Start (  ) 

Starts the reader = create the threads which start to check periodically the queue of requested images to read

void creaImageIO::MultiThreadImageReader::Stop (  ) 

Stops the reader = stops the threads and delete the images loaded.

void creaImageIO::MultiThreadImageReader::Request ( MultiThreadImageReaderUser user,
const std::string &  filename,
int  priority 
)

Request the image "filename" with a given priority When the image is ready (or an error occurred) The observer's callback is invoked

vtkImageData* creaImageIO::MultiThreadImageReader::GetImage ( const std::string &  filename  ) 

(no user callback but image returned)

Request the image "filename" immediately Blocks until image loaded

Referenced by creaImageIO::GimmickView::GetDefaultImage().

Here is the caller graph for this function:

int creaImageIO::MultiThreadImageReader::GetMaximalPriority (  ) 

Referenced by creaImageIO::GimmickView::GetMaximalPriority().

Here is the caller graph for this function:

void creaImageIO::MultiThreadImageReader::OnMultiThreadImageReaderEvent ( const std::string &  filename,
EventType  type,
vtkImageData *  image 
) [virtual]

The virtual method to overload by MultiThreadImageReader users It is called when an image has been loaded or unloaded Provides : The image file name which was requested The type of event If type==ImageLoaded the image pointer, else NULL pointer

Reimplemented from creaImageIO::MultiThreadImageReaderUser.

int creaImageIO::MultiThreadImageReader::GetMaximalPriorityWithoutLocking (  )  [protected]

void creaImageIO::MultiThreadImageReader::SignalImageRead ( ImageToLoadPtr  p,
bool  purge 
) [protected]

The callback from threaded readers when an image is read.

void creaImageIO::MultiThreadImageReader::UpdateUnloadPriority ( ImageToLoadPtr  p,
int  priority 
) [protected]

void creaImageIO::MultiThreadImageReaderUser::MultiThreadImageReaderEventLock (  )  [inline, inherited]

Definition at line 51 of file creaImageIOMultiThreadImageReader.h.

void creaImageIO::MultiThreadImageReaderUser::MultiThreadImageReaderEventUnlock (  )  [inline, inherited]

Definition at line 53 of file creaImageIOMultiThreadImageReader.h.

wxMutex& creaImageIO::MultiThreadImageReaderUser::GetMultiThreadImageReaderUserMutex (  )  [inline, inherited]

Definition at line 55 of file creaImageIOMultiThreadImageReader.h.


Friends And Related Function Documentation

friend class ThreadedImageReader [friend]

Reimplemented from creaImageIO::MultiThreadImageReaderUser.

Definition at line 74 of file creaImageIOMultiThreadImageReader.h.

friend class MultiThreadImageReader [friend, inherited]

Definition at line 27 of file creaImageIOMultiThreadImageReader.h.


Member Data Documentation

ImageMapType creaImageIO::MultiThreadImageReader::mImages [protected]

The map of images.

Definition at line 201 of file creaImageIOMultiThreadImageReader.h.

ImageToLoadPtrPriorityComparator creaImageIO::MultiThreadImageReader::mComparator [protected]

Comparator for the image to load queue.

Definition at line 203 of file creaImageIOMultiThreadImageReader.h.

ImageToLoadPtrIndexer creaImageIO::MultiThreadImageReader::mIndexer [protected]

Indexer for the image to load queue.

Definition at line 205 of file creaImageIOMultiThreadImageReader.h.

IndexedHeap<ImageToLoadPtr, ImageToLoadPtrPriorityComparator, ImageToLoadPtrIndexer> creaImageIO::MultiThreadImageReader::mQueue [protected]

The image to load priority queue.

Definition at line 209 of file creaImageIOMultiThreadImageReader.h.

ThreadedImageReaderListType creaImageIO::MultiThreadImageReader::mThreadedImageReaderList [protected]

Definition at line 213 of file creaImageIOMultiThreadImageReader.h.

int creaImageIO::MultiThreadImageReader::mNumberOfThreadedReadersRunning [protected]

The number of currently running threaded readers.

Definition at line 215 of file creaImageIOMultiThreadImageReader.h.

std::string creaImageIO::MultiThreadImageReader::mRequestedFilename [protected]

For GetImage : the filename requested.

The mutex used to access safely internal data from any thread LG : Removed ! We now use the embedded mutex in User from which we inherit...

Definition at line 222 of file creaImageIOMultiThreadImageReader.h.

vtkImageData* creaImageIO::MultiThreadImageReader::mRequestedImage [protected]

For GetImage : the image requested.

Definition at line 224 of file creaImageIOMultiThreadImageReader.h.

ImageReader* creaImageIO::MultiThreadImageReader::mReader [protected]

If number of threads == 0 then uses an internal non-threaded reader.

Definition at line 227 of file creaImageIOMultiThreadImageReader.h.

IndexedHeap<ImageToLoadPtr, ImageToLoadPtrInversePriorityComparator, ImageToUnloadPtrIndexer> creaImageIO::MultiThreadImageReader::mUnloadQueue [protected]

The image to unload priority queue.

The type of list of images loaded used to unload oldest image when memory limit exceeded

Definition at line 234 of file creaImageIOMultiThreadImageReader.h.

long creaImageIO::MultiThreadImageReader::mTotalMem [protected]

Definition at line 237 of file creaImageIOMultiThreadImageReader.h.

long creaImageIO::MultiThreadImageReader::mTotalMemMax [protected]

Definition at line 238 of file creaImageIOMultiThreadImageReader.h.


The documentation for this class was generated from the following file:
Generated on Mon Jun 22 10:49:59 2009 for CreaImageIO by  doxygen 1.5.3