SourceXtractorPlusPlus  0.13
Please provide a description of the project.
ProgressMediator.h
Go to the documentation of this file.
1 
17 /*
18  * ProgressMediator.h
19  *
20  * Created on: Sep 07, 2018
21  * Author: Alejandro Alvarez Ayllon
22  */
23 
24 #ifndef _SEMAIN_PROGRESSLISTENER_H
25 #define _SEMAIN_PROGRESSLISTENER_H
26 
29 #include "SEUtils/Observable.h"
30 #include <atomic>
31 #include <mutex>
32 
33 namespace SourceXtractor {
34 
35 struct ProgressInfo {
38 
39  ProgressInfo(const std::string &name, int done, int total): m_label(name), m_done(done), m_total(total) {}
40 };
41 
44 
52 public:
56 
57  ~ProgressMediator() = default;
58 
63 
68 
73 
78 
83 
87  void done();
88 
92  void update(void);
93 
94 private:
96  std::atomic_int m_detected, m_deblended, m_measured;
97 
101 
102  // Mediator serializes the notifications, so the observers do not need to worry about
103  // being called from multiple threads
105 
106  // This is a set of internal classes that implement the Observer pattern for different stages.
107  class ProgressCounter;
108  class SourceCounter;
109  class GroupCounter;
110 };
111 
112 } // end SourceXtractor
113 
114 #endif // _SEMAIN_PROGRESSLISTENER_H
SourceXtractor::ProgressMediator::ProgressCounter
Definition: ProgressMediator.cpp:28
SourceXtractor::ProgressMediator::m_mutex
std::mutex m_mutex
Definition: ProgressMediator.h:104
SourceXtractor::Observer< SegmentationProgress >
SourceXtractor::ProgressMediator::m_detected
std::atomic_int m_detected
Definition: ProgressMediator.h:96
std::string
STL class.
std::shared_ptr
STL class.
SourceGroupInterface.h
SourceXtractor::ProgressInfo::m_done
int m_done
Definition: ProgressMediator.h:37
SourceXtractor::ProgressMediator::m_segmentation_listener
std::shared_ptr< segmentation_observer_t > m_segmentation_listener
Definition: ProgressMediator.h:98
SourceXtractor::ProgressMediator::SourceCounter
Definition: ProgressMediator.cpp:50
SourceXtractor::DoneObservable
Observable< bool > DoneObservable
Definition: ProgressMediator.h:43
SourceXtractor::ProgressObservable
Observable< std::list< ProgressInfo > > ProgressObservable
Definition: ProgressMediator.h:42
SourceXtractor::ProgressMediator::getMeasurementObserver
std::shared_ptr< group_observer_t > & getMeasurementObserver(void)
Definition: ProgressMediator.cpp:100
SourceXtractor::ProgressMediator::m_deblending_listener
std::shared_ptr< group_observer_t > m_deblending_listener
Definition: ProgressMediator.h:100
SourceXtractor::ProgressMediator::m_detection_listener
std::shared_ptr< source_observer_t > m_detection_listener
Definition: ProgressMediator.h:99
SourceXtractor::ProgressMediator::GroupCounter
Definition: ProgressMediator.cpp:65
SourceXtractor::ProgressMediator::source_observer_t
Observer< std::shared_ptr< SourceInterface > > source_observer_t
Definition: ProgressMediator.h:54
SourceXtractor::ProgressMediator::m_deblended
std::atomic_int m_deblended
Definition: ProgressMediator.h:96
SourceXtractor
Definition: Aperture.h:30
SourceXtractor::ProgressMediator::update
void update(void)
Definition: ProgressMediator.cpp:104
SourceXtractor::ProgressInfo::m_total
int m_total
Definition: ProgressMediator.h:37
SourceXtractor::ProgressMediator::segmentation_observer_t
Observer< SegmentationProgress > segmentation_observer_t
Definition: ProgressMediator.h:53
SourceXtractor::ProgressMediator::~ProgressMediator
~ProgressMediator()=default
SourceXtractor::ProgressMediator::getDetectionObserver
std::shared_ptr< source_observer_t > & getDetectionObserver(void)
Definition: ProgressMediator.cpp:92
SourceXtractor::ProgressMediator::getDeblendingObserver
std::shared_ptr< group_observer_t > & getDeblendingObserver(void)
Definition: ProgressMediator.cpp:96
Observable.h
SourceXtractor::ProgressInfo::m_label
std::string m_label
Definition: ProgressMediator.h:36
SourceXtractor::ProgressInfo::ProgressInfo
ProgressInfo(const std::string &name, int done, int total)
Definition: ProgressMediator.h:39
SourceXtractor::ProgressMediator::getSegmentationObserver
std::shared_ptr< segmentation_observer_t > & getSegmentationObserver(void)
Definition: ProgressMediator.cpp:88
SourceXtractor::Observable
Implements the Observer pattern. Notifications will be made using a message of type T.
Definition: Observable.h:51
SourceXtractor::ProgressMediator::ProgressMediator
ProgressMediator()
Definition: ProgressMediator.cpp:80
SourceXtractor::ProgressMediator::group_observer_t
Observer< std::shared_ptr< SourceGroupInterface > > group_observer_t
Definition: ProgressMediator.h:55
SourceXtractor::ProgressMediator::m_measured
std::atomic_int m_measured
Definition: ProgressMediator.h:96
std::mutex
STL class.
SourceXtractor::ProgressMediator::done
void done()
Definition: ProgressMediator.cpp:114
SourceXtractor::ProgressMediator
Definition: ProgressMediator.h:51
SourceXtractor::ProgressMediator::m_segmentation_progress
SegmentationProgress m_segmentation_progress
Definition: ProgressMediator.h:95
Segmentation.h
SourceXtractor::SegmentationProgress
Used to notify observers of the progress of the processing of the image.
Definition: Segmentation.h:48
SourceXtractor::ProgressMediator::m_measurement_listener
std::shared_ptr< group_observer_t > m_measurement_listener
Definition: ProgressMediator.h:100
SourceXtractor::ProgressInfo
Definition: ProgressMediator.h:35