X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=src%2Fbackgroundsupr.h;h=2ee7db6662ebd652b49a5cf94f9dd2c94be5af2a;hb=cd93aebb4dec4e0ae88d53f131c2320ae92d0cab;hp=12372d0b4e0e88ae5eed87445d3744ee90182d7d;hpb=a97f1819c4f24321ba8d54a16f6534ee94404d26;p=ctsim.git diff --git a/src/backgroundsupr.h b/src/backgroundsupr.h index 12372d0..2ee7db6 100644 --- a/src/backgroundsupr.h +++ b/src/backgroundsupr.h @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2001 Kevin Rosenberg ** -** $Id: backgroundsupr.h,v 1.4 2001/02/25 19:24:01 kevin Exp $ +** $Id: backgroundsupr.h,v 1.8 2001/03/04 22:30:19 kevin Exp $ ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as @@ -54,28 +54,27 @@ class BackgroundSupervisor : public wxEvtHandler { private: DECLARE_DYNAMIC_CLASS(BackgroundSupervisor) - typedef std::vector ThreadContainer; - ThreadContainer m_vecpThreads; + SupervisorThread* m_pMyThread; wxFrame* m_pParentFrame; wxDocument* m_pDocument; const std::string m_strProcessTitle; - wxProgressDialog* m_pDialogProgress; - + + const unsigned int m_iTotalUnits; + int m_iNumThreads; + bool m_bDone; volatile bool m_bFail; std::string m_strFailMessage; - int m_iNumThreads; + bool m_bCancelled; volatile int m_iRunning; unsigned int m_iUnitsDone; - const unsigned int m_iTotalUnits; - bool m_bCancelled; - bool m_bDone; Timer* m_pTimer; bool m_bBackgroundTaskAdded; bool m_bWorkersDeleted; + + typedef std::vector ThreadContainer; + ThreadContainer m_vecpThreads; wxCriticalSection m_critsectThreads; -protected: - SupervisorThread* m_MyThread; public: enum { @@ -94,7 +93,7 @@ public: int iTotalUnits); BackgroundSupervisor () - : m_iTotalUnits(0), wxEvtHandler() + : wxEvtHandler(), m_iTotalUnits(0) {} virtual ~BackgroundSupervisor(); @@ -105,24 +104,25 @@ public: bool start(); virtual void onDone() {}; - virtual void OnWorkerFail(wxCommandEvent& event); - virtual void OnWorkerUnitTick(wxCommandEvent& event); - virtual void OnWorkerDone(wxCommandEvent& event); - virtual void OnCancel(wxCommandEvent& event); - virtual void OnAckDocumentRemove(wxCommandEvent& event); + virtual void onCancel(); + virtual void onAckDocumentRemove(); + + virtual void onWorkerFail(int iThread, std::string strFailMessage); + virtual void onWorkerUnitTick(); + virtual void onWorkerDone(int iThread); void deleteWorkers(); + bool workersDone() const { return m_iRunning == 0; } bool workersDeleted() const { return m_bWorkersDeleted; } bool isDone() const {return m_bDone;} void setDone() { m_bDone = true; } bool fail() const {return m_bFail;} const std::string& getFailMessage() const { return m_strFailMessage; } + bool cancelled() const {return m_bCancelled;} int getNumWorkers() const { return m_iNumThreads; } double getTimerEnd() { return m_pTimer->timerEnd(); } - static void cancelSupervisor (BackgroundSupervisor* pSupervisor); - DECLARE_EVENT_TABLE() }; @@ -130,14 +130,13 @@ public: class BackgroundWorkerThread : public wxThread { protected: BackgroundSupervisor* m_pSupervisor; + const int m_iThread; const int m_iStartUnit; const int m_iNumUnits; - const int m_iThread; public: BackgroundWorkerThread (BackgroundSupervisor* pSupervisor, int iThread, int iStartUnit, int iNumUnits) - : m_pSupervisor(pSupervisor), m_iThread(iThread), m_iStartUnit(iStartUnit), m_iNumUnits(iNumUnits), - wxThread (wxTHREAD_DETACHED) + : wxThread (wxTHREAD_DETACHED), m_pSupervisor(pSupervisor), m_iThread(iThread), m_iStartUnit(iStartUnit), m_iNumUnits(iNumUnits) {} };