SourceXtractorPlusPlus
0.12
Please provide a description of the project.
SEMain
SEMain
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
27
#include "
SEFramework/Source/SourceGroupInterface.h
"
28
#include "
SEFramework/Pipeline/Segmentation.h
"
29
#include "
SEUtils/Observable.h
"
30
#include <atomic>
31
#include <mutex>
32
33
namespace
SourceXtractor
{
34
35
struct
ProgressInfo
{
36
std::string
m_label
;
37
int
m_done
,
m_total
;
38
39
ProgressInfo
(
const
std::string
&name,
int
done,
int
total):
m_label
(name),
m_done
(done),
m_total
(total) {}
40
};
41
42
typedef
Observable<std::list<ProgressInfo>
>
ProgressObservable
;
43
typedef
Observable<bool>
DoneObservable
;
44
51
class
ProgressMediator
:
public
ProgressObservable
,
public
DoneObservable
{
52
public
:
53
typedef
Observer<SegmentationProgress>
segmentation_observer_t
;
54
typedef
Observer<std::shared_ptr<SourceInterface>
>
source_observer_t
;
55
typedef
Observer<std::shared_ptr<SourceGroupInterface>
>
group_observer_t
;
56
57
~ProgressMediator
() =
default
;
58
62
ProgressMediator
();
63
67
std::shared_ptr<segmentation_observer_t>
&
getSegmentationObserver
(
void
);
68
72
std::shared_ptr<source_observer_t>
&
getDetectionObserver
(
void
);
73
77
std::shared_ptr<group_observer_t>
&
getDeblendingObserver
(
void
);
78
82
std::shared_ptr<group_observer_t>
&
getMeasurementObserver
(
void
);
83
87
void
done
();
88
92
void
update
(
void
);
93
94
private
:
95
SegmentationProgress
m_segmentation_progress
;
96
std::atomic_int
m_detected
,
m_deblended
,
m_measured
;
97
98
std::shared_ptr<segmentation_observer_t>
m_segmentation_listener
;
99
std::shared_ptr<source_observer_t>
m_detection_listener
;
100
std::shared_ptr<group_observer_t>
m_deblending_listener
,
m_measurement_listener
;
101
102
// Mediator serializes the notifications, so the observers do not need to worry about
103
// being called from multiple threads
104
std::mutex
m_mutex
;
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::DoneObservable
Observable< bool > DoneObservable
Definition:
ProgressMediator.h:43
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::group_observer_t
Observer< std::shared_ptr< SourceGroupInterface > > group_observer_t
Definition:
ProgressMediator.h:55
SourceXtractor::ProgressMediator::getMeasurementObserver
std::shared_ptr< group_observer_t > & getMeasurementObserver(void)
Definition:
ProgressMediator.cpp:94
SourceXtractor::ProgressMediator::SourceCounter
Definition:
ProgressMediator.cpp:44
Observable.h
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
SourceGroupInterface.h
std::mutex
SourceXtractor::ProgressMediator::segmentation_observer_t
Observer< SegmentationProgress > segmentation_observer_t
Definition:
ProgressMediator.h:53
SourceXtractor::ProgressMediator::ProgressCounter
Definition:
ProgressMediator.cpp:28
std::string
STL class.
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::update
void update(void)
Definition:
ProgressMediator.cpp:98
SourceXtractor::Observable
Implements the Observer pattern. Notifications will be made using a message of type T...
Definition:
Observable.h:51
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
SourceXtractor
Definition:
Aperture.h:30
SourceXtractor::ProgressInfo::m_done
int m_done
Definition:
ProgressMediator.h:37
SourceXtractor::ProgressMediator::done
void done()
Definition:
ProgressMediator.cpp:108
SourceXtractor::ProgressInfo::m_total
int m_total
Definition:
ProgressMediator.h:37
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::~ProgressMediator
~ProgressMediator()=default
SourceXtractor::ProgressMediator::GroupCounter
Definition:
ProgressMediator.cpp:59
SourceXtractor::ProgressMediator::m_segmentation_progress
SegmentationProgress m_segmentation_progress
Definition:
ProgressMediator.h:95
SourceXtractor::ProgressObservable
Observable< std::list< ProgressInfo > > ProgressObservable
Definition:
ProgressMediator.h:42
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< SegmentationProgress >
Segmentation.h
SourceXtractor::ProgressInfo
Definition:
ProgressMediator.h:35
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::source_observer_t
Observer< std::shared_ptr< SourceInterface > > source_observer_t
Definition:
ProgressMediator.h:54
Generated by
1.8.14