SourceXtractorPlusPlus
0.10
Please provide a description of the project.
SEMain
src
lib
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
24
#include "
SEMain/ProgressMediator.h
"
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;
36
m_progress_listener
.
update
();
37
}
38
39
private
:
40
ProgressMediator
&
m_progress_listener
;
41
SegmentationProgress
&
m_segmentation_progress
;
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
49
void
handleMessage
(
const
std::shared_ptr<SourceInterface>
&)
override
{
50
++
m_counter
;
51
m_progress_listener
.
update
();
52
}
53
54
private
:
55
ProgressMediator
&
m_progress_listener
;
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
64
void
handleMessage
(
const
std::shared_ptr<SourceGroupInterface>
& group)
override
{
65
m_counter
+= group->size();
66
m_progress_listener
.
update
();
67
}
68
69
private
:
70
ProgressMediator
&
m_progress_listener
;
71
std::atomic_int&
m_counter
;
72
};
73
74
ProgressMediator::ProgressMediator
() :
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
82
std::shared_ptr<ProgressMediator::segmentation_observer_t>
&
ProgressMediator::getSegmentationObserver
() {
83
return
m_segmentation_listener
;
84
}
85
86
std::shared_ptr<ProgressMediator::source_observer_t>
&
ProgressMediator::getDetectionObserver
() {
87
return
m_detection_listener
;
88
}
89
90
std::shared_ptr<ProgressMediator::group_observer_t>
&
ProgressMediator::getDeblendingObserver
() {
91
return
m_deblending_listener
;
92
}
93
94
std::shared_ptr<ProgressMediator::group_observer_t>
&
ProgressMediator::getMeasurementObserver
() {
95
return
m_measurement_listener
;
96
}
97
98
void
ProgressMediator::update
(
void
) {
99
std::lock_guard<std::mutex>
guard(
m_mutex
);
100
this->
ProgressObservable::notifyObservers
(
std::list<ProgressInfo>
{
101
{
"Segmentation"
,
m_segmentation_progress
.
position
,
m_segmentation_progress
.
total
},
102
{
"Detected"
,
m_detected
, -1},
103
{
"Deblended"
,
m_deblended
, -1},
104
{
"Measured"
,
m_measured
,
m_deblended
},
105
});
106
}
107
108
void
ProgressMediator::done
() {
109
std::lock_guard<std::mutex>
guard(
m_mutex
);
110
this->
DoneObservable::notifyObservers
(
true
);
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
Generated by
1.8.17