SourceXtractorPlusPlus
0.10
Please provide a description of the project.
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
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
std::shared_ptr
SourceXtractor::ProgressMediator::m_detected
std::atomic_int m_detected
Definition:
ProgressMediator.h:96
SourceXtractor::SegmentationProgress
Used to notify observers of the progress of the processing of the image.
Definition:
Segmentation.h:48
SourceXtractor::ProgressMediator::SourceCounter::m_counter
std::atomic_int & m_counter
Definition:
ProgressMediator.cpp:56
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::SegmentationProgress::position
int position
Definition:
Segmentation.h:49
SourceXtractor::ProgressMediator::getMeasurementObserver
std::shared_ptr< group_observer_t > & getMeasurementObserver(void)
Definition:
ProgressMediator.cpp:94
SourceXtractor::ProgressMediator::SourceCounter
Definition:
ProgressMediator.cpp:44
SourceXtractor::ProgressMediator::GroupCounter::GroupCounter
GroupCounter(ProgressMediator &progress_listener, std::atomic_int &counter)
Definition:
ProgressMediator.cpp:61
SourceXtractor::ProgressMediator::m_mutex
std::mutex m_mutex
Definition:
ProgressMediator.h:104
SourceXtractor::ProgressMediator::ProgressMediator
ProgressMediator()
Definition:
ProgressMediator.cpp:74
SourceXtractor::ProgressMediator::getDeblendingObserver
std::shared_ptr< group_observer_t > & getDeblendingObserver(void)
Definition:
ProgressMediator.cpp:90
SourceXtractor::ProgressMediator::ProgressCounter
Definition:
ProgressMediator.cpp:28
SourceXtractor::ProgressMediator::SourceCounter::handleMessage
void handleMessage(const std::shared_ptr< SourceInterface > &) override
Definition:
ProgressMediator.cpp:49
SourceXtractor::ProgressMediator::update
void update(void)
Definition:
ProgressMediator.cpp:98
SourceXtractor::ProgressMediator::SourceCounter::SourceCounter
SourceCounter(ProgressMediator &progress_listener, std::atomic_int &counter)
Definition:
ProgressMediator.cpp:46
SourceXtractor::ProgressMediator::getDetectionObserver
std::shared_ptr< source_observer_t > & getDetectionObserver(void)
Definition:
ProgressMediator.cpp:86
SourceXtractor::ProgressMediator::m_detection_listener
std::shared_ptr< source_observer_t > m_detection_listener
Definition:
ProgressMediator.h:99
ProgressMediator.h
SourceXtractor::ProgressMediator::GroupCounter::m_progress_listener
ProgressMediator & m_progress_listener
Definition:
ProgressMediator.cpp:70
SourceXtractor::ProgressMediator::done
void done()
Definition:
ProgressMediator.cpp:108
std::list
STL class.
SourceXtractor::ProgressMediator::m_deblended
std::atomic_int m_deblended
Definition:
ProgressMediator.h:96
SourceXtractor::ProgressMediator::getSegmentationObserver
std::shared_ptr< segmentation_observer_t > & getSegmentationObserver(void)
Definition:
ProgressMediator.cpp:82
SourceXtractor::ProgressMediator::GroupCounter
Definition:
ProgressMediator.cpp:59
SourceXtractor::ProgressMediator::m_segmentation_progress
SegmentationProgress m_segmentation_progress
Definition:
ProgressMediator.h:95
SourceXtractor::SegmentationProgress::total
int total
Definition:
Segmentation.h:49
std::lock_guard
SourceXtractor::ProgressMediator
Definition:
ProgressMediator.h:51
SourceXtractor::ProgressMediator::m_segmentation_listener
std::shared_ptr< segmentation_observer_t > m_segmentation_listener
Definition:
ProgressMediator.h:98
SourceXtractor::ProgressMediator::m_measured
std::atomic_int m_measured
Definition:
ProgressMediator.h:96
SourceXtractor::Observer
Observer interface to be used with Observable to implement the Observer pattern.
Definition:
Observable.h:38
SourceXtractor::ProgressMediator::ProgressCounter::m_segmentation_progress
SegmentationProgress & m_segmentation_progress
Definition:
ProgressMediator.cpp:41
SourceXtractor::ProgressMediator::ProgressCounter::handleMessage
void handleMessage(const SegmentationProgress &progress) override
Definition:
ProgressMediator.cpp:34
SourceXtractor::ProgressMediator::ProgressCounter::m_progress_listener
ProgressMediator & m_progress_listener
Definition:
ProgressMediator.cpp:40
SourceXtractor::ProgressMediator::GroupCounter::handleMessage
void handleMessage(const std::shared_ptr< SourceGroupInterface > &group) override
Definition:
ProgressMediator.cpp:64
SourceXtractor::ProgressMediator::GroupCounter::m_counter
std::atomic_int & m_counter
Definition:
ProgressMediator.cpp:71
SourceXtractor::ProgressMediator::m_deblending_listener
std::shared_ptr< group_observer_t > m_deblending_listener
Definition:
ProgressMediator.h:100
SourceXtractor::ProgressMediator::m_measurement_listener
std::shared_ptr< group_observer_t > m_measurement_listener
Definition:
ProgressMediator.h:100
SourceXtractor::ProgressMediator::SourceCounter::m_progress_listener
ProgressMediator & m_progress_listener
Definition:
ProgressMediator.cpp:55
Generated by
1.8.5