www.cemf.ir
observer.hpp
Go to the documentation of this file.
1
/*------------------------------- phasicFlow ---------------------------------
2
O C enter of
3
O O E ngineering and
4
O O M ultiscale modeling of
5
OOOOOOO F luid flow
6
------------------------------------------------------------------------------
7
Copyright (C): www.cemf.ir
8
email: hamid.r.norouzi AT gmail.com
9
------------------------------------------------------------------------------
10
Licence:
11
This file is part of phasicFlow code. It is a free software for simulating
12
granular and multiphase flows. You can redistribute it and/or modify it under
13
the terms of GNU General Public License v3 or any other later versions.
14
15
phasicFlow is distributed to help others in their research in the field of
16
granular and multiphase flows, but WITHOUT ANY WARRANTY; without even the
17
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18
19
-----------------------------------------------------------------------------*/
20
21
22
#ifndef __observer_hpp__
23
#define __observer_hpp__
24
25
#include "
message.hpp
"
26
27
namespace
pFlow
28
{
29
30
class
subscriber;
31
class
anyList;
32
33
class
observer
34
{
35
private
:
36
37
39
const
subscriber
*
subscriber_
=
nullptr
;
40
42
message
message_
;
43
44
friend
subscriber
;
45
46
const
subscriber
*
changeSubscriber
(
const
subscriber
* newSub);
47
48
inline
void
invalidateSubscriber
()
49
{
50
subscriber_
=
nullptr
;
51
}
52
53
public
:
54
55
observer
(
message
msg);
56
57
observer
(
58
const
subscriber
* subscrbr,
59
message
msg);
60
61
virtual
62
~observer
();
63
64
void
subscribe
(
65
const
subscriber
* subscrbr,
66
message
msg);
67
68
observer
&
addEvent
(
message::EVENT
event);
69
70
inline
71
bool
subscribed
()
const
72
{
73
return
subscriber_
!=
nullptr
;
74
}
75
76
void
addToSubscriber
(
77
const
subscriber
* subscrbr,
78
message
msg);
79
80
bool
addToSubscriber
(
const
subscriber
&
subscriber
);
81
82
83
84
static
85
constexpr
auto
numEvents
()
86
{
87
return
message::numEvents
();
88
}
89
90
virtual
bool
hearChanges
(
91
real
t,
92
real
dt,
93
uint32
iter,
94
const
message
& msg,
95
const
anyList
& varList)=0;
96
};
97
98
}
// pFlow
99
100
101
#endif // __observer_hpp__
pFlow::observer::numEvents
static constexpr auto numEvents()
Definition:
observer.hpp:85
pFlow::observer
Definition:
observer.hpp:33
pFlow::message
Definition:
message.hpp:33
pFlow::real
float real
Definition:
builtinTypes.hpp:45
message.hpp
pFlow::observer::observer
observer(message msg)
Definition:
observer.cpp:31
pFlow::observer::message_
message message_
list of events in the message
Definition:
observer.hpp:42
pFlow::uint32
unsigned int uint32
Definition:
builtinTypes.hpp:56
pFlow::message::numEvents
static constexpr auto numEvents()
Definition:
message.hpp:177
pFlow::observer::addEvent
observer & addEvent(message::EVENT event)
Definition:
observer.cpp:51
pFlow::subscriber
Definition:
subscriber.hpp:37
pFlow::message::EVENT
EVENT
Definition:
message.hpp:36
pFlow
Definition:
demGeometry.hpp:27
pFlow::anyList
Definition:
anyList.hpp:35
pFlow::observer::subscribed
bool subscribed() const
Definition:
observer.hpp:71
pFlow::observer::subscriber
friend subscriber
Definition:
observer.hpp:44
pFlow::observer::subscriber_
const subscriber * subscriber_
pointer to subscriber
Definition:
observer.hpp:39
pFlow::observer::addToSubscriber
void addToSubscriber(const subscriber *subscrbr, message msg)
Definition:
observer.cpp:67
pFlow::observer::hearChanges
virtual bool hearChanges(real t, real dt, uint32 iter, const message &msg, const anyList &varList)=0
pFlow::observer::invalidateSubscriber
void invalidateSubscriber()
Definition:
observer.hpp:48
pFlow::observer::~observer
virtual ~observer()
Definition:
observer.cpp:44
pFlow::observer::subscribe
void subscribe(const subscriber *subscrbr, message msg)
pFlow::observer::changeSubscriber
const subscriber * changeSubscriber(const subscriber *newSub)
Definition:
observer.cpp:24
src
phasicFlow
eventManagement
observer.hpp
Generated by
1.8.17