Isis 3 Programmer Reference
CubeDataThreadTester.h
1#ifndef CubeDataThreadTester_h
2#define CubeDataThreadTester_h
8/* SPDX-License-Identifier: CC0-1.0 */
9
10#include <QThread>
11
12template<typename T> class QList;
13template<typename A, typename B> struct QPair;
14
15namespace Isis {
16 class Brick;
17 class CubeDataThread;
18
26 Q_OBJECT
27
28 public:
30 virtual ~CubeDataThreadTester();
31
34 return p_numTestsDone;
35 }
36
41
42 void Connect();
43 void ReadCubeTest(int);
44 void ReadCubeTest2(int, int);
45 void ReadCubeTest3(int);
46 void WriteCubeTest(int);
47 void WriteCubeTest2(int, int);
48 void WriteCubeTest3(int);
50 void NotifyChangeTest(int);
51
52 public slots:
53 void ReadBrick(void *requester, int cubeId, const Isis::Brick *data);
54 void ReadWriteBrick(void *requester, int cubeId, Isis::Brick *data);
55 void BrickChanged(int cubeId, const Isis::Brick *data);
56
57 signals:
69 void RequestReadCube(int cubeId, int startSample, int startLine,
70 int endSample, int endLine, int band, void *caller);
71
72
84 void RequestReadWriteCube(int cubeId, int startSample, int startLine,
85 int endSample, int endLine, int band, void *caller);
86
87
92 void NotifyDoneWithData(int, const Isis::Brick *);
93
94 private:
96 void run();
97
100
103
106
109
111 QVector< QPair<int, const Isis::Brick *> > * p_cachedDoneBricks;
112 };
113
114};
115
116
117#endif
Buffer for containing a three dimensional section of an image.
Definition Brick.h:45
Encapsulation of Cube I/O with Change Notifications.
bool p_notifyDone
True if we will notify done on the next brick received for R/W.
void Connect()
This connects this class' signals and slots with CubeDataThread's signals and slots.
void RequestReadWriteCube(int cubeId, int startSample, int startLine, int endSample, int endLine, int band, void *caller)
Ask for a brick for reading and writing.
void ReadCubeTest(int)
This tests a basic read.
void ReadBrick(void *requester, int cubeId, const Isis::Brick *data)
This is called when a brick is read.
void WriteCubeTest(int)
This tests a basic write.
int p_numTestsDone
The count of completed tests.
void WriteCubeTest2(int, int)
This tests two non-conflicting writes.
CubeDataThread * p_cubeDataThread
The data thread being tested.
CubeDataThread * DataThread()
Returns the cube data thread being tested.
bool p_execStarted
True if this thread is started.
void ReadCubeTest3(int)
This tests an overlapping read.
void NotifyChangeTest(int)
This test tests this automatic change notifications.
virtual ~CubeDataThreadTester()
This cleans up the cube data thread.
void run()
This thread is centered completely around its event loop.
CubeDataThreadTester(CubeDataThread *)
This initializes a CubeDataThreadTester.
void ReadCubeTest2(int, int)
This tests two basic reads with no conflicts.
void WriteCubeTest3(int)
This tests two conflicting* writes.
void WriteCubeTest3BreakDeadlock()
This test breaks the deadlock caused by the third write test.
int NumberOfTestsDone()
Returns the number of tests done (testing methods count as several)
QVector< QPair< int, const Isis::Brick * > > * p_cachedDoneBricks
A list of bricks we haven't send the done signal for.
void RequestReadCube(int cubeId, int startSample, int startLine, int endSample, int endLine, int band, void *caller)
Ask for a brick for reading.
void ReadWriteBrick(void *requester, int cubeId, Isis::Brick *data)
This is called when a brick is given for R/W.
void NotifyDoneWithData(int, const Isis::Brick *)
Let the cube data thread know we're no longer working with a particular brick.
void BrickChanged(int cubeId, const Isis::Brick *data)
This is called when a brick is written.
This is free and unencumbered software released into the public domain.
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16
This is free and unencumbered software released into the public domain.