#include <creaImageIOMultiThreadImageReader.h>
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 ImageToLoad * | ImageToLoadPtr |
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. | |
ImageReader * | mReader |
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... |
TAKE CARE : For the moment it only supports a **SINGLE USER**
Definition at line 71 of file creaImageIOMultiThreadImageReader.h.
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] |
typedef std::vector<ThreadedImageReader*> creaImageIO::MultiThreadImageReader::ThreadedImageReaderListType [protected] |
The type of list of threaded readers.
Definition at line 212 of file creaImageIOMultiThreadImageReader.h.
enum creaImageIO::MultiThreadImageReaderUser::EventType [inherited] |
Reimplemented in creaImageIO::WxGimmickView.
Definition at line 32 of file creaImageIOMultiThreadImageReader.h.
00033 { 00034 ThreadedReaderStarted, 00035 ThreadedReaderStopped, 00036 ImageLoaded, 00037 ImageUnloaded, 00038 Error 00039 }
creaImageIO::MultiThreadImageReader::MultiThreadImageReader | ( | int | number_of_threads = 1 |
) |
Ctor with the number of threads to use.
creaImageIO::MultiThreadImageReader::~MultiThreadImageReader | ( | ) |
Dtor.
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().
int creaImageIO::MultiThreadImageReader::GetMaximalPriority | ( | ) |
Referenced by creaImageIO::GimmickView::GetMaximalPriority().
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.
00052 { mMultiThreadImageReaderUserMutex.Lock(); }
void creaImageIO::MultiThreadImageReaderUser::MultiThreadImageReaderEventUnlock | ( | ) | [inline, inherited] |
Definition at line 53 of file creaImageIOMultiThreadImageReader.h.
00054 { mMultiThreadImageReaderUserMutex.Unlock(); }
wxMutex& creaImageIO::MultiThreadImageReaderUser::GetMultiThreadImageReaderUserMutex | ( | ) | [inline, inherited] |
Definition at line 55 of file creaImageIOMultiThreadImageReader.h.
00056 { return mMultiThreadImageReaderUserMutex; }
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.
Comparator for the image to load queue.
Definition at line 203 of file creaImageIOMultiThreadImageReader.h.
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.
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.