00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef INTERNALQUEUEINTERFACE_H
00018 #define INTERNALQUEUEINTERFACE_H
00019
00020 #include <globalsearch/queueinterfaces/local.h>
00021
00022 #include <QtCore/QProcess>
00023
00024
00026 namespace GlobalSearch {
00027 class InternalQueueInterfaceConfigDialog;
00028
00029
00030
00031
00032 class InternalQueueProcess : public QProcess
00033 { Q_OBJECT;
00034 public:
00035 enum Status {NotStarted = 0, Running, Finished, Error};
00036 InternalQueueProcess(QObject *parent) :
00037 QProcess(parent), m_status(NotStarted)
00038 {
00039 connect(this, SIGNAL(started()), this, SLOT(setRunning()));
00040 connect(this, SIGNAL(finished(int, QProcess::ExitStatus)),
00041 this, SLOT(setFinished()));
00042 connect(this, SIGNAL(error(QProcess::ProcessError)),
00043 this, SLOT(setFinished()));}
00044 public slots:
00045 void setRunning() {m_status = Running;};
00046 void setFinished() {m_status = Finished;};
00047 Status status() {return m_status;};
00048 private:
00049 Status m_status;
00050 };
00051
00052 class InternalQueueInterface : public LocalQueueInterface
00053 {
00054 Q_OBJECT
00055 public:
00056 friend class InternalQueueInterfaceConfigDialog;
00057 explicit InternalQueueInterface(OptBase *parent,
00058 const QString &settingsFile = "");
00059 virtual ~InternalQueueInterface();
00060
00071 virtual bool isReadyToSearch(QString *err);
00072
00073 public slots:
00074
00083 virtual bool startJob(Structure *s);
00084
00090 virtual bool stopJob(Structure *s);
00091
00095 virtual QueueInterface::QueueStatus getStatus(Structure *s) const;
00096
00107 virtual bool prepareForStructureUpdate(Structure *s) const;
00108
00115 virtual QDialog* dialog();
00116
00117 protected:
00120 QHash<unsigned long, InternalQueueProcess*> m_processes;
00121
00122 };
00123
00124 }
00125
00127
00128 #endif // INTERNALQUEUEINTERFACE_H