//////////////////////////////////////////////////////////////////////////////// /*! @file ScriptJob.h Background script execution. - Part of RAdmin project. - Uses RANet - Research Assistant Net Library. - Uses Qt v.5 - http://qt.io/ - Copyright(C) 2020, Viktor E. Bursian, St.Petersburg, Russia. VBursian AT gmail DOT com */////////////////////////////////////////////////////////////////////////////// #ifndef ScriptJob_H #define ScriptJob_H #include #include #include #include namespace RA { //------------------------------------------------------------------------------ //--------------------------------------------------------------- sScriptJob --- class sScriptJob : public QThread { Q_OBJECT public: ~sScriptJob (); explicit sScriptJob (const QString & script ,QObject * parent = nullptr); int Progress (); public slots: void Abort (); void Failure (const QString & message); void ReportNewJobStart (QString); void ReportNewStageStart (QString); void ReportJobConclusion (QString); signals: void TotalJobs (int); void NewJob (); void TotalStages (int); void NewStage (); void Out (QString); void OutPar (QString); void AllDone (); void Aborted (); void Failed (); protected: void run () override; bool AbortRequested (); bool FailureHappend (); void SetProgress (int); void SetProgressTarget (int); virtual void FindAndExecute (const QString & job_name ,QStringList & params); private: // multi-thread shared QMutex Mutex; bool AbortRequestedFlag; bool FailureHappendFlag; int TheProgress; int TheProgressTarget; private: QStringList Jobs; int TheCurrentJobNum; }; //------------------------------------------------------------------------------ } //namespace RA #endif