RSB
0.10.0
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
ConnectorBase.cpp
Go to the documentation of this file.
1
/* ============================================================
2
*
3
* This file is part of the RSB project
4
*
5
* Copyright (C) 2011, 2012, 2013 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
#include "
ConnectorBase.h
"
28
29
#include <boost/format.hpp>
30
31
#include "
Bus.h
"
32
#include "
Factory.h
"
33
34
using namespace
std;
35
36
using namespace
boost;
37
38
using namespace
rsc::logging;
39
40
namespace
rsb {
41
namespace
transport {
42
namespace
socket {
43
44
ConnectorBase::ConnectorBase(
ConverterSelectionStrategyPtr
converters,
45
const
string
& host,
46
unsigned
int
port,
47
Server
server,
48
bool
tcpnodelay) :
49
ConverterSelectingConnector
<string>(converters),
50
active(false), logger(Logger::getLogger(
"rsb.transport.socket.ConnectorBase"
)),
51
host(host), port(port), server(server), tcpnodelay(tcpnodelay) {
52
}
53
54
ConnectorBase::~ConnectorBase
() {
55
if
(this->
active
) {
56
deactivate
();
57
}
58
}
59
60
Scope
ConnectorBase::getScope
()
const
{
61
return
this->
scope
;
62
}
63
64
void
ConnectorBase::setScope
(
const
Scope
& scope) {
65
if
(this->
active
)
66
throw
std::runtime_error(
"Cannot set scope while active"
);
67
68
this->scope =
scope
;
69
}
70
71
void
ConnectorBase::activate
() {
72
RSCDEBUG(
logger
,
"Activating"
);
73
74
// This connector is added to the connector list of the bus returned by
75
// getBus
76
RSCINFO(
logger
,
"Server mode: "
<< this->
server
);
77
Factory
& factory = Factory::getInstance();
78
this->
bus
= factory.
getBus
(this->
server
, this->
host
, this->
port
,
79
this->
tcpnodelay
,
this
);
80
81
this->
active
=
true
;
82
83
RSCDEBUG(
logger
,
"Using bus "
<<
getBus
());
84
}
85
86
void
ConnectorBase::deactivate
() {
87
RSCDEBUG(
logger
,
"Deactivating"
);
88
89
this->
active
=
false
;
90
91
BusPtr
bus
=
getBus
();
92
if
(bus) {
93
RSCDEBUG(
logger
,
"Removing ourselves from connector list of bus "
<< bus);
94
bus->removeConnector(
this
);
95
}
96
97
this->bus.reset();
98
}
99
100
BusPtr
ConnectorBase::getBus
() {
101
return
this->
bus
;
102
}
103
104
}
105
}
106
}
rsb
transport
socket
ConnectorBase.cpp
Generated on Fri Jan 24 2014 17:49:05 for RSB by
1.8.1.2