YARP
Yet Another Robot Platform
Route.cpp
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT)
3  * SPDX-FileCopyrightText: 2006-2010 RobotCub Consortium
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #include <yarp/os/Route.h>
8 
9 #include <yarp/os/Contact.h>
10 
11 #include <string>
12 #include <utility>
13 
14 
15 using yarp::os::Contact;
16 using yarp::os::Route;
17 
18 #ifndef DOXYGEN_SHOULD_SKIP_THIS
19 
20 class Route::Private
21 {
22 public:
23  Private(std::string fromName,
24  std::string toName,
25  Contact toContact,
26  std::string carrierName) :
27  fromName(std::move(fromName)),
28  toName(std::move(toName)),
29  toContact(std::move(toContact)),
30  carrierName(std::move(carrierName))
31  {
32  }
33 
34  std::string fromName;
35  std::string toName;
36  Contact toContact;
37  std::string carrierName;
38 };
39 
40 #endif // DOXYGEN_SHOULD_SKIP_THIS
41 
42 
43 Route::Route() :
44  mPriv(new Private(std::string(),
45  std::string(),
46  Contact(),
47  std::string()))
48 {
49 }
50 
51 Route::Route(const std::string& fromName,
52  const std::string& toName,
53  const std::string& carrierName) :
54  mPriv(new Private(fromName,
55  toName,
56  Contact(),
57  carrierName))
58 {
59 }
60 
61 Route::Route(const Route& rhs) :
62  mPriv(new Private(*(rhs.mPriv)))
63 {
64 }
65 
66 Route::Route(Route&& rhs) noexcept :
67  mPriv(rhs.mPriv)
68 {
69  rhs.mPriv = nullptr;
70 }
71 
73 {
74  delete mPriv;
75 }
76 
78 {
79  if (&rhs != this) {
80  *mPriv = *(rhs.mPriv);
81  }
82  return *this;
83 }
84 
85 Route& Route::operator=(Route&& rhs) noexcept
86 {
87  if (&rhs != this) {
88  std::swap(mPriv, rhs.mPriv);
89  }
90  return *this;
91 }
92 
93 const std::string& Route::getFromName() const
94 {
95  return mPriv->fromName;
96 }
97 
98 void Route::setFromName(const std::string& fromName)
99 {
100  mPriv->fromName = fromName;
101 }
102 
103 const std::string& Route::getToName() const
104 {
105  return mPriv->toName;
106 }
107 
108 void Route::setToName(const std::string& toName)
109 {
110  mPriv->toName = toName;
111 }
112 
114 {
115  return mPriv->toContact;
116 }
117 
118 void Route::setToContact(const Contact& toContact)
119 {
120  mPriv->toContact = toContact;
121 }
122 
123 const std::string& Route::getCarrierName() const
124 {
125  return mPriv->carrierName;
126 }
127 
128 void Route::setCarrierName(const std::string& carrierName)
129 {
130  mPriv->carrierName = carrierName;
131 }
132 
134 {
135  mPriv->fromName.swap(mPriv->toName);
136 }
137 
138 std::string Route::toString() const
139 {
140  return getFromName() + "->" + getCarrierName() + "->" + getToName();
141 }
Represents how to reach a part of a YARP network.
Definition: Contact.h:36
Information about a connection between two ports.
Definition: Route.h:29
const std::string & getToName() const
Get the destination of the route.
Definition: Route.cpp:103
Route()
Default constructor.
Definition: Route.cpp:43
virtual ~Route()
Destructor.
Definition: Route.cpp:72
const std::string & getCarrierName() const
Get the carrier type of the route.
Definition: Route.cpp:123
void setToName(const std::string &toName)
Set the destination of the route.
Definition: Route.cpp:108
std::string toString() const
Render a text form of the route, "source->carrier->dest".
Definition: Route.cpp:138
Route & operator=(const Route &rhs)
Copy assignment operator.
Definition: Route.cpp:77
const std::string & getFromName() const
Get the source of the route.
Definition: Route.cpp:93
void swapNames()
Swap from and to names.
Definition: Route.cpp:133
void setFromName(const std::string &fromName)
Set the source of the route.
Definition: Route.cpp:98
void setCarrierName(const std::string &carrierName)
Set the carrier type of the route.
Definition: Route.cpp:128
void setToContact(const Contact &toContact)
Set the destination contact of the route.
Definition: Route.cpp:118
const Contact & getToContact() const
Get the destination contact of the route, if available.
Definition: Route.cpp:113