SourceXtractorPlusPlus
0.8
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
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::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.5