SourceXtractorPlusPlus 1.0.3
SourceXtractor++, the next generation SExtractor
Loading...
Searching...
No Matches
ProgressMediator.cpp
Go to the documentation of this file.
1
17/*
18 * Progress.cpp
19 *
20 * Created on: Sep 07, 2018
21 * Author: Alejandro Alvarez Ayllon
22 */
23
25
26namespace SourceXtractor {
27
28class ProgressMediator::ProgressCounter : public Observer<SegmentationProgress> {
29public:
30 ProgressCounter(ProgressMediator& progress_listener, SegmentationProgress& segmentation_progress,
32 m_progress_listener(progress_listener), m_segmentation_progress(segmentation_progress),
33 m_mutex(mutex) {
34 }
35
36 void handleMessage(const SegmentationProgress& progress) override {
37 {
39 m_segmentation_progress = progress;
40 }
41 m_progress_listener.update();
42 }
43
44private:
48};
49
50class ProgressMediator::SourceCounter : public Observer<SourceInterface> {
51public:
52 SourceCounter(ProgressMediator& progress_listener, std::atomic_int& counter)
53 : m_progress_listener(progress_listener), m_counter(counter) {}
54
55 void handleMessage(const SourceInterface&) override {
56 ++m_counter;
57 m_progress_listener.update();
58 }
59
60private:
62 std::atomic_int& m_counter;
63};
64
65class ProgressMediator::GroupCounter : public Observer<SourceGroupInterface> {
66public:
67 GroupCounter(ProgressMediator& progress_listener, std::atomic_int& counter)
68 : m_progress_listener(progress_listener), m_counter(counter) {}
69
70 void handleMessage(const SourceGroupInterface& group) override {
71 m_counter += group.size();
72 m_progress_listener.update();
73 }
74
75private:
77 std::atomic_int& m_counter;
78};
79
87
91
95
99
103
107 {"Segmentation", m_segmentation_progress.position, m_segmentation_progress.total},
108 {"Detected", m_detected, -1},
109 {"Deblended", m_deblended, -1},
110 {"Measured", m_measured, m_deblended},
111 });
112}
113
118
119} // end SourceXtractor
void notifyObservers(const std::list< ProgressInfo > &message) const
Definition Observable.h:71
Observer interface to be used with Observable to implement the Observer pattern.
Definition Observable.h:38
void handleMessage(const SourceGroupInterface &group) override
GroupCounter(ProgressMediator &progress_listener, std::atomic_int &counter)
void handleMessage(const SegmentationProgress &progress) override
ProgressCounter(ProgressMediator &progress_listener, SegmentationProgress &segmentation_progress, std::mutex &mutex)
void handleMessage(const SourceInterface &) override
SourceCounter(ProgressMediator &progress_listener, std::atomic_int &counter)
std::shared_ptr< segmentation_observer_t > m_segmentation_listener
SegmentationProgress m_segmentation_progress
std::shared_ptr< group_observer_t > m_measurement_listener
std::shared_ptr< group_observer_t > & getDeblendingObserver(void)
std::shared_ptr< group_observer_t > m_deblending_listener
std::shared_ptr< segmentation_observer_t > & getSegmentationObserver(void)
std::shared_ptr< source_observer_t > m_detection_listener
std::shared_ptr< source_observer_t > & getDetectionObserver(void)
std::shared_ptr< group_observer_t > & getMeasurementObserver(void)
Defines the interface used to group sources.
virtual unsigned int size() const =0
The SourceInterface is an abstract "source" that has properties attached to it.
T lock(T... args)
T make_shared(T... args)
STL namespace.
Used to notify observers of the progress of the processing of the image.