RSB
0.7.0
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
DirectEventReceivingStrategy.h
Go to the documentation of this file.
1
/* ============================================================
2
*
3
* This file is part of the RSB project
4
*
5
* Copyright (C) 2011 Jan Moringen <jmoringe@techfak.uni-bielefeld.de>
6
*
7
* This file may be licensed under the terms of the
8
* GNU Lesser General Public License Version 3 (the ``LGPL''),
9
* or (at your option) any later version.
10
*
11
* Software distributed under the License is distributed
12
* on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
13
* express or implied. See the LGPL for the specific language
14
* governing rights and limitations.
15
*
16
* You should have received a copy of the LGPL along with this
17
* program. If not, go to http://www.gnu.org/licenses/lgpl.html
18
* or write to the Free Software Foundation, Inc.,
19
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20
*
21
* The development of this software was supported by:
22
* CoR-Lab, Research Institute for Cognition and Robotics
23
* Bielefeld University
24
*
25
* ============================================================ */
26
27
#pragma once
28
29
#include <list>
30
#include <set>
31
#include <iostream>
32
33
#include <boost/thread/shared_mutex.hpp>
34
35
#include <rsc/runtime/Properties.h>
36
#include <rsc/logging/Logger.h>
37
38
#include "../Event.h"
39
#include "../ParticipantConfig.h"
40
41
#include "
PushEventReceivingStrategy.h
"
42
43
#include "rsb/rsbexports.h"
44
45
namespace
rsb {
46
namespace
eventprocessing {
47
61
class
RSB_EXPORT
DirectEventReceivingStrategy
:
public
PushEventReceivingStrategy
{
62
public
:
63
static
EventReceivingStrategy
* create(
const
rsc::runtime::Properties& props);
64
65
DirectEventReceivingStrategy
(
bool
singleThreaded =
false
);
66
67
virtual
~
DirectEventReceivingStrategy
();
68
69
void
printContents(std::ostream& stream)
const
;
70
71
void
setHandlerErrorStrategy(
const
ParticipantConfig::ErrorStrategy
& strategy);
72
73
// Qualification of HandlerPtr is required since there is another
74
// HandlerPtr type in eventprocessing.
75
virtual
void
addHandler(
rsb::HandlerPtr
handler,
const
bool
& wait);
76
virtual
void
removeHandler(
rsb::HandlerPtr
handler,
const
bool
& wait);
77
78
virtual
void
addFilter(
filter::FilterPtr
filter);
79
virtual
void
removeFilter(
filter::FilterPtr
filter);
80
81
void
handle(
EventPtr
e);
82
83
private
:
84
typedef
std::list<rsb::HandlerPtr>
HandlerList
;
85
86
// Qualification of HandlerPtr is required since there is another
87
// HandlerPtr type in eventprocessing.
88
bool
filter(
EventPtr
event);
89
void
deliver(
rsb::HandlerPtr
handler,
EventPtr
event);
90
91
void
handleDispatchError(
const
std::string& message);
92
93
bool
filterNoLock(
EventPtr
e);
94
95
void
handleNoLock(
EventPtr
e);
96
97
rsc::logging::LoggerPtr
logger
;
98
99
mutable
boost::shared_mutex
filtersMutex
;
100
std::set<filter::FilterPtr>
filters
;
101
102
mutable
boost::shared_mutex
errorStrategyMutex
;
103
ParticipantConfig::ErrorStrategy
errorStrategy
;
104
105
mutable
boost::shared_mutex
handlerMutex
;
106
HandlerList
handlers
;
107
108
bool
singleThreaded
;
109
};
110
111
}
112
}
rsb
eventprocessing
DirectEventReceivingStrategy.h
Generated on Sun Mar 16 2014 14:18:57 for RSB by
1.8.1.2