SourceXtractorPlusPlus  0.11
Please provide a description of the project.
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 
26 namespace SourceXtractor {
27 
28 class ProgressMediator::ProgressCounter : public Observer<SegmentationProgress> {
29 public:
30  ProgressCounter(ProgressMediator& progress_listener, SegmentationProgress& segmentation_progress) :
31  m_progress_listener(progress_listener), m_segmentation_progress(segmentation_progress) {
32  }
33 
34  void handleMessage(const SegmentationProgress& progress) override {
35  m_segmentation_progress = progress;
37  }
38 
39 private:
42 };
43 
44 class ProgressMediator::SourceCounter : public Observer<std::shared_ptr<SourceInterface>> {
45 public:
46  SourceCounter(ProgressMediator& progress_listener, std::atomic_int& counter) :
47  m_progress_listener(progress_listener), m_counter(counter) {}
48 
50  ++m_counter;
52  }
53 
54 private:
56  std::atomic_int& m_counter;
57 };
58 
59 class ProgressMediator::GroupCounter : public Observer<std::shared_ptr<SourceGroupInterface>> {
60 public:
61  GroupCounter(ProgressMediator& progress_listener, std::atomic_int& counter) :
62  m_progress_listener(progress_listener), m_counter(counter) {}
63 
65  m_counter += group->size();
67  }
68 
69 private:
71  std::atomic_int& m_counter;
72 };
73 
75  m_segmentation_progress{0, 0}, m_detected{0}, m_deblended{0}, m_measured{0},
76  m_segmentation_listener{std::make_shared<ProgressCounter>(*this, m_segmentation_progress)},
77  m_detection_listener{std::make_shared<SourceCounter>(*this, m_detected)},
78  m_deblending_listener{std::make_shared<GroupCounter>(*this, m_deblended)},
79  m_measurement_listener{std::make_shared<GroupCounter>(*this, m_measured)} {
80 }
81 
84 }
85 
87  return m_detection_listener;
88 }
89 
91  return m_deblending_listener;
92 }
93 
96 }
97 
102  {"Detected", m_detected, -1},
103  {"Deblended", m_deblended, -1},
104  {"Measured", m_measured, m_deblended},
105  });
106 }
107 
111 }
112 
113 } // end SourceXtractor
SourceXtractor::ProgressMediator::ProgressCounter
Definition: ProgressMediator.cpp:28
SourceXtractor::Observable::notifyObservers
void notifyObservers(const T &message) const
Definition: Observable.h:71
SourceXtractor::ProgressMediator::ProgressCounter::ProgressCounter
ProgressCounter(ProgressMediator &progress_listener, SegmentationProgress &segmentation_progress)
Definition: ProgressMediator.cpp:30
SourceXtractor::ProgressMediator::m_mutex
std::mutex m_mutex
Definition: ProgressMediator.h:104
SourceXtractor::Observer
Observer interface to be used with Observable to implement the Observer pattern.
Definition: Observable.h:38
SourceXtractor::ProgressMediator::m_detected
std::atomic_int m_detected
Definition: ProgressMediator.h:96
SourceXtractor::ProgressMediator::GroupCounter::GroupCounter
GroupCounter(ProgressMediator &progress_listener, std::atomic_int &counter)
Definition: ProgressMediator.cpp:61
std::shared_ptr
STL class.
std::list
STL class.
SourceXtractor::ProgressMediator::m_segmentation_listener
std::shared_ptr< segmentation_observer_t > m_segmentation_listener
Definition: ProgressMediator.h:98
SourceXtractor::ProgressMediator::SourceCounter
Definition: ProgressMediator.cpp:44
ProgressMediator.h
SourceXtractor::ProgressMediator::SourceCounter::SourceCounter
SourceCounter(ProgressMediator &progress_listener, std::atomic_int &counter)
Definition: ProgressMediator.cpp:46
SourceXtractor::ProgressMediator::getMeasurementObserver
std::shared_ptr< group_observer_t > & getMeasurementObserver(void)
Definition: ProgressMediator.cpp:94
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::SegmentationProgress::total
int total
Definition: Segmentation.h:49
SourceXtractor::ProgressMediator::SourceCounter::handleMessage
void handleMessage(const std::shared_ptr< SourceInterface > &) override
Definition: ProgressMediator.cpp:49
std::lock_guard
STL class.
SourceXtractor::ProgressMediator::GroupCounter::m_progress_listener
ProgressMediator & m_progress_listener
Definition: ProgressMediator.cpp:70
SourceXtractor::ProgressMediator::GroupCounter
Definition: ProgressMediator.cpp:59
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:98
SourceXtractor::ProgressMediator::SourceCounter::m_counter
std::atomic_int & m_counter
Definition: ProgressMediator.cpp:56
SourceXtractor::ProgressMediator::GroupCounter::m_counter
std::atomic_int & m_counter
Definition: ProgressMediator.cpp:71
SourceXtractor::ProgressMediator::getDetectionObserver
std::shared_ptr< source_observer_t > & getDetectionObserver(void)
Definition: ProgressMediator.cpp:86
SourceXtractor::ProgressMediator::getDeblendingObserver
std::shared_ptr< group_observer_t > & getDeblendingObserver(void)
Definition: ProgressMediator.cpp:90
SourceXtractor::ProgressMediator::getSegmentationObserver
std::shared_ptr< segmentation_observer_t > & getSegmentationObserver(void)
Definition: ProgressMediator.cpp:82
SourceXtractor::ProgressMediator::ProgressMediator
ProgressMediator()
Definition: ProgressMediator.cpp:74
SourceXtractor::ProgressMediator::SourceCounter::m_progress_listener
ProgressMediator & m_progress_listener
Definition: ProgressMediator.cpp:55
SourceXtractor::ProgressMediator::ProgressCounter::m_segmentation_progress
SegmentationProgress & m_segmentation_progress
Definition: ProgressMediator.cpp:41
SourceXtractor::ProgressMediator::ProgressCounter::m_progress_listener
ProgressMediator & m_progress_listener
Definition: ProgressMediator.cpp:40
SourceXtractor::ProgressMediator::m_measured
std::atomic_int m_measured
Definition: ProgressMediator.h:96
SourceXtractor::ProgressMediator::GroupCounter::handleMessage
void handleMessage(const std::shared_ptr< SourceGroupInterface > &group) override
Definition: ProgressMediator.cpp:64
SourceXtractor::ProgressMediator::done
void done()
Definition: ProgressMediator.cpp:108
SourceXtractor::ProgressMediator
Definition: ProgressMediator.h:51
SourceXtractor::ProgressMediator::m_segmentation_progress
SegmentationProgress m_segmentation_progress
Definition: ProgressMediator.h:95
SourceXtractor::SegmentationProgress::position
int position
Definition: Segmentation.h:49
SourceXtractor::ProgressMediator::ProgressCounter::handleMessage
void handleMessage(const SegmentationProgress &progress) override
Definition: ProgressMediator.cpp:34
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