diff Core/JobsEngine/JobsRegistry.h @ 4022:a2e4edc7b9aa more-changes

wip: adding job changes
author Alain Mazy <alain@mazy.be>
date Tue, 09 Jun 2020 08:46:52 +0200
parents 94f4a18a79cc
children 1d2b31fc782f
line wrap: on
line diff
--- a/Core/JobsEngine/JobsRegistry.h	Mon Jun 08 16:10:09 2020 +0200
+++ b/Core/JobsEngine/JobsRegistry.h	Tue Jun 09 08:46:52 2020 +0200
@@ -86,6 +86,7 @@
                        JobHandler*& b) const;
     };
 
+    typedef std::set<IObserver*>                            Observers;
     typedef std::map<std::string, JobHandler*>              JobsIndex;
     typedef std::list<JobHandler*>                          CompletedJobs;
     typedef std::set<JobHandler*>                           RetryJobs;
@@ -103,7 +104,8 @@
     boost::condition_variable  someJobComplete_;
     size_t                     maxCompletedJobs_;
 
-    IObserver*                 observer_;
+    boost::shared_mutex        observersMutex_;
+    Observers                  observers_;
 
 
 #ifndef NDEBUG
@@ -141,8 +143,7 @@
     
   public:
     JobsRegistry(size_t maxCompletedJobs) :
-      maxCompletedJobs_(maxCompletedJobs),
-      observer_(NULL)
+      maxCompletedJobs_(maxCompletedJobs)
     {
     }
 
@@ -195,9 +196,9 @@
     bool GetState(JobState& state,
                   const std::string& id);
 
-    void SetObserver(IObserver& observer);
+    void AddObserver(IObserver& observer);
 
-    void ResetObserver();
+    void ResetObserver(IObserver& observer);
 
     void GetStatistics(unsigned int& pending,
                        unsigned int& running,