1 #ifndef CubeDataThread_h 
    2 #define CubeDataThread_h 
    6 template<
typename T> 
class QList;
 
    8 template<
typename A, 
typename B> 
struct QPair;
 
    9 template<
typename A, 
typename B> 
class QMap;
 
   18   class UniversalGroundMap;
 
   61                   bool mustOpenReadWrite = 
false);
 
   77       void ReadCube(
int cubeId, 
int startSample, 
int startLine,
 
   78                     int endSample, 
int endLine, 
int band, 
void *caller);
 
   79       void ReadWriteCube(
int cubeId, 
int startSample, 
int startLine,
 
   80                          int endSample, 
int endLine, 
int band, 
void *caller);
 
  149                        int instanceNum, 
bool &exact);
 
  151       void GetCubeData(
int cubeId, 
int ss, 
int sl, 
int es, 
int el, 
int band,
 
  152                        void *caller, 
bool sharedLock);
 
  154       void AcquireLock(QReadWriteLock *lockObject, 
bool readLock);
 
QMutex * p_threadSafeMutex
This locks the member variable p_managedCubes and p_managedData itself. 
 
void GetCubeData(int cubeId, int ss, int sl, int es, int el, int band, void *caller, bool sharedLock)
This helper method reads in cube data and handles the locking of similar bricks appropriately. 
 
int FindCubeId(const Cube *) const 
Given a Cube pointer, return the cube ID associated with it. 
 
void RemoveCube(int cubeId)
Removes a cube from this lock manager. 
 
File name manipulation and expansion. 
 
void DoneWithData(int, const Isis::Brick *)
When done processing with a brick (reading or writing) this slot needs to be signalled to free locks ...
 
int p_numChangeListeners
This is the number of shaded locks to put on a brick when changes made. 
 
unsigned int p_currentId
This is the unique id counter for cubes. 
 
Buffer for containing a three dimensional section of an image. 
 
QList< QPair< QReadWriteLock *, Brick * > > * p_managedData
This is a list of bricks in memory and their locks. 
 
QList< int > * p_managedDataSources
This is the associated cube ID with each brick. 
 
void ReadReady(void *requester, int cubeId, const Isis::Brick *data)
This signal will be emitted when ReadCube has finished processing. 
 
UniversalGroundMap * GetUniversalGroundMap(int cubeId) const 
This returns a new Universal Ground Map given a Cube ID. 
 
void AcquireLock(QReadWriteLock *lockObject, bool readLock)
This method is exclusively used to acquire locks. 
 
unsigned int p_currentLocksWaiting
Number of locks being attempted that re-entered the event loop. 
 
virtual ~CubeDataThread()
This class is a self-contained thread, so normally it would be bad to simply delete it...
 
int AddCube(const FileName &fileName, bool mustOpenReadWrite=false)
This method is designed to be callable from any thread before data is requested, though no known side...
 
const CubeDataThread & operator=(CubeDataThread rhs)
Assigning CubeDataThreads to eachother is bad, so this has been intentionally not implemented! ...
 
Encapsulation of Cube I/O with Change Notifications. 
 
void AddChangeListener()
You must call this method after connecting to the BrickChanged signal, otherwise you are not guarante...
 
void ReadWriteReady(void *requester, int cubeId, Isis::Brick *data)
This signal will be emitted when ReadWriteCube has finished processing. 
 
QMap< int, QPair< bool, Cube * > > * p_managedCubes
This is a list of the opened cubes. 
 
void ReadCube(int cubeId, int startSample, int startLine, int endSample, int endLine, int band, void *caller)
This slot should be connected to and upon receiving a signal it will begin the necessary cube I/O to ...
 
const Cube * GetCube(int cubeId) const 
This returns a constant pointer to a Cube at the given Cube ID. 
 
void RemoveChangeListener()
You must call this method after disconnecting from the BrickChanged signal, otherwise bricks cannot b...
 
void BrickChanged(int cubeId, const Isis::Brick *data)
DO NOT CONNECT TO THIS SIGNAL WITHOUT CALLING AddChangeListener(). 
 
void ReadWriteCube(int cubeId, int startSample, int startLine, int endSample, int endLine, int band, void *caller)
This slot should be connected to and upon receiving a signal it will begin the necessary cube I/O to ...
 
int OverlapIndex(const Brick *initial, int cubeId, int instanceNum, bool &exact)
This is a searching method used to identify overlapping data already in memory. 
 
int BricksInMemory()
This is a helper method for both testing/debugging and general information that provides the current ...
 
bool p_stopping
This is set to help the shutdown process when deleted. 
 
CubeDataThread()
This constructs a CubeDataThread(). 
 
IO Handler for Isis Cubes. 
 
bool FreeBrick(int brickIndex)
This is used internally to delete bricks when possible.