QseFileReader Class Reference

#include <qsefilereader.h>

Inheritance diagram for QseFileReader:

Inheritance graph
[legend]
Collaboration diagram for QseFileReader:

Collaboration graph
[legend]

List of all members.

Public Types

typedef QThread inherited

Public Slots

void openFile (QString fileName)
void appendFile (QString fileName)

Public Member Functions

 QseFileReader (const QString &name, QObject *parent=0)
 ~QseFileReader ()
QseInputFileinputFile ()
void startWait ()

Protected Member Functions

void run ()

Private Attributes

QString m_Name
QseInputFilem_Data
QMutex m_Mutex
QWaitCondition m_Started
QWaitCondition m_NewFile
bool m_Abort
bool m_Restart
QStringList m_FileNames
int m_Changed


Detailed Description

Definition at line 15 of file qsefilereader.h.


Member Typedef Documentation

Definition at line 23 of file qsefilereader.h.


Constructor & Destructor Documentation

QseFileReader::QseFileReader ( const QString &  name,
QObject parent = 0 
)

Definition at line 8 of file qsefilereader.cpp.

References m_Mutex, and m_Started.

00009   : inherited(parent),
00010     m_Name(name),
00011     m_Data(NULL),
00012     m_Abort(false),
00013     m_Restart(false),
00014     m_Changed(false)
00015 {
00016 //   printf("file reader constructed\n");
00017 
00018   m_Mutex.lock();
00019 
00020   start();
00021 
00022   m_Started.wait(&m_Mutex);
00023   m_Mutex.unlock();
00024 }

QseFileReader::~QseFileReader (  ) 

Definition at line 26 of file qsefilereader.cpp.

References m_Abort, m_Mutex, and m_NewFile.

00027 {
00028   quit();
00029 
00030   m_Mutex.lock();
00031   m_Abort = true;
00032   m_Mutex.unlock();
00033 
00034   m_NewFile.wakeOne();
00035 
00036   wait();
00037 }


Member Function Documentation

QseInputFile * QseFileReader::inputFile (  ) 

Definition at line 129 of file qsefilereader.cpp.

References m_Data, and m_Mutex.

Referenced by QseDataFlow::run().

00130 {
00131   QMutexLocker lock(&m_Mutex);
00132 
00133   return m_Data;
00134 }

void QseFileReader::startWait (  ) 

Definition at line 39 of file qsefilereader.cpp.

References m_Mutex, and m_Started.

00040 {
00041   m_Mutex.lock();
00042   start();
00043 
00044   m_Started.wait(&m_Mutex);
00045   m_Mutex.unlock();
00046 }

void QseFileReader::openFile ( QString  fileName  )  [slot]

Definition at line 48 of file qsefilereader.cpp.

References m_FileNames, m_Mutex, m_NewFile, and m_Restart.

00049 {
00050   m_Mutex.lock();
00051 
00052   m_FileNames.clear();
00053   m_FileNames.append(fileName);
00054   m_Restart = true;
00055 
00056   m_Mutex.unlock();
00057 
00058   m_NewFile.wakeOne();
00059 }

void QseFileReader::appendFile ( QString  fileName  )  [slot]

Definition at line 61 of file qsefilereader.cpp.

References m_FileNames, m_Mutex, and m_NewFile.

00062 {
00063   m_Mutex.lock();
00064 
00065   m_FileNames.append(fileName);
00066 
00067   m_Mutex.unlock();
00068 
00069   m_NewFile.wakeOne();
00070 }

void QseFileReader::run (  )  [protected]

Definition at line 72 of file qsefilereader.cpp.

References QseDataSet::emitLoadCompleted(), m_Abort, m_Changed, m_Data, m_FileNames, m_Mutex, m_Name, m_NewFile, m_Restart, and m_Started.

00073 {
00074   m_Mutex.lock();
00075   m_Data = new QseInputFile(m_Name);
00076   m_Mutex.unlock();
00077 
00078   m_Started.wakeOne();
00079 
00080   m_Mutex.lock();
00081   m_NewFile.wait(&m_Mutex);
00082   m_Mutex.unlock();
00083 
00084 //   printf("CurrentThread: %p ReaderThread: %p DataSetThread: %p\n",
00085 //   QThread::currentThread(), this->thread(), m_Data->thread());
00086 
00087   forever {
00088     m_Mutex.lock();
00089     int atend = m_Data -> atEnd();
00090     int nfiles = m_FileNames.size();
00091     m_Mutex.unlock();
00092 
00093     if (m_Abort)   return;
00094 
00095     m_Mutex.lock();
00096 
00097     if (m_Restart || atend) {
00098       if (m_Restart) {
00099   m_Data -> clear();
00100   m_Restart = false;
00101   m_Changed = true;
00102       }
00103 
00104       if (nfiles) {
00105   QString nextFile = m_FileNames.takeFirst();
00106 //  printf("next data file\n");
00107 
00108   m_Data -> nextDataFile(nextFile);
00109   m_Changed = true;
00110       } else {
00111   if (m_Changed) {
00112     m_Data->emitLoadCompleted();
00113     m_Changed = false;
00114   }
00115 
00116   m_NewFile.wait(&m_Mutex, 1000);
00117       }
00118     } else if (!atend) {
00119       m_Data -> nextInputLine();
00120       m_Changed = true;
00121     }
00122 
00123     m_Mutex.unlock();
00124   }
00125 
00126   delete m_Data;
00127 }

Here is the call graph for this function:


Member Data Documentation

QString QseFileReader::m_Name [private]

Definition at line 36 of file qsefilereader.h.

Referenced by run().

Definition at line 37 of file qsefilereader.h.

Referenced by inputFile(), and run().

QMutex QseFileReader::m_Mutex [private]

QWaitCondition QseFileReader::m_Started [private]

Definition at line 39 of file qsefilereader.h.

Referenced by QseFileReader(), run(), and startWait().

QWaitCondition QseFileReader::m_NewFile [private]

Definition at line 40 of file qsefilereader.h.

Referenced by appendFile(), openFile(), run(), and ~QseFileReader().

bool QseFileReader::m_Abort [private]

Definition at line 41 of file qsefilereader.h.

Referenced by run(), and ~QseFileReader().

bool QseFileReader::m_Restart [private]

Definition at line 42 of file qsefilereader.h.

Referenced by openFile(), and run().

QStringList QseFileReader::m_FileNames [private]

Definition at line 43 of file qsefilereader.h.

Referenced by appendFile(), openFile(), and run().

int QseFileReader::m_Changed [private]

Definition at line 44 of file qsefilereader.h.

Referenced by run().


The documentation for this class was generated from the following files:

Generated on Fri May 2 16:26:42 2008 for QSE by  doxygen 1.5.5