summaryrefslogtreecommitdiffstats
path: root/messagebus
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@oath.com>2018-03-22 23:07:53 +0100
committerHenning Baldersheim <balder@oath.com>2018-04-03 18:33:28 +0200
commit2efcbf7038eb951c140e9aacd32105772c5d8ddb (patch)
tree2e36942fa5b19a37206f17eb0b6d7351115cbd87 /messagebus
parent2e1264f793b4107759d3e933ea70375418cec4d0 (diff)
Use std::move and move constructors where benefiscal.
Diffstat (limited to 'messagebus')
-rw-r--r--messagebus/src/vespa/messagebus/message.h4
-rw-r--r--messagebus/src/vespa/messagebus/routing/hop.cpp5
-rw-r--r--messagebus/src/vespa/messagebus/routing/hop.h6
-rw-r--r--messagebus/src/vespa/messagebus/routing/route.cpp14
-rw-r--r--messagebus/src/vespa/messagebus/routing/route.h10
-rw-r--r--messagebus/src/vespa/messagebus/routing/routeparser.cpp4
-rw-r--r--messagebus/src/vespa/messagebus/routing/routingcontext.cpp16
-rw-r--r--messagebus/src/vespa/messagebus/routing/routingcontext.h4
-rw-r--r--messagebus/src/vespa/messagebus/routing/routingnode.cpp24
-rw-r--r--messagebus/src/vespa/messagebus/routing/routingnode.h6
-rw-r--r--messagebus/src/vespa/messagebus/routing/routingtable.cpp6
-rw-r--r--messagebus/src/vespa/messagebus/sourcesession.cpp2
12 files changed, 50 insertions, 51 deletions
diff --git a/messagebus/src/vespa/messagebus/message.h b/messagebus/src/vespa/messagebus/message.h
index 1f1388244b3..ebb2e7b6027 100644
--- a/messagebus/src/vespa/messagebus/message.h
+++ b/messagebus/src/vespa/messagebus/message.h
@@ -29,6 +29,8 @@ public:
* Constructs a new instance of this class.
*/
Message();
+ Message(Message &&) noexcept = default;
+ Message & operator = (Message &&) noexcept = default;
/**
* If a message is deleted with elements on the callstack, this destructor
@@ -131,7 +133,7 @@ public:
* @param route The new route.
* @return This, to allow chaining.
*/
- Message &setRoute(const Route &route) { _route = route; return *this; }
+ Message &setRoute(Route route) { _route = std::move(route); return *this; }
/**
* Inherited from Routable. Classifies this object as 'not a reply'.
diff --git a/messagebus/src/vespa/messagebus/routing/hop.cpp b/messagebus/src/vespa/messagebus/routing/hop.cpp
index 4eb3ff88664..232ae9f840a 100644
--- a/messagebus/src/vespa/messagebus/routing/hop.cpp
+++ b/messagebus/src/vespa/messagebus/routing/hop.cpp
@@ -18,9 +18,8 @@ Hop::Hop(const string &selector) :
_ignoreResult = hop._ignoreResult;
}
-Hop::Hop(const std::vector<IHopDirective::SP> &selector,
- bool ignoreResult) :
- _selector(selector),
+Hop::Hop(std::vector<IHopDirective::SP> selector, bool ignoreResult) :
+ _selector(std::move(selector)),
_ignoreResult(ignoreResult)
{ }
diff --git a/messagebus/src/vespa/messagebus/routing/hop.h b/messagebus/src/vespa/messagebus/routing/hop.h
index 72cd2726fa5..6e7ab94caa1 100644
--- a/messagebus/src/vespa/messagebus/routing/hop.h
+++ b/messagebus/src/vespa/messagebus/routing/hop.h
@@ -40,12 +40,12 @@ public:
* @param selector The selector to copy.
* @param ignoreResult Whether or not to ignore the result of this hop.
*/
- Hop(const std::vector<IHopDirective::SP> &selector, bool ignoreResult);
+ Hop(std::vector<IHopDirective::SP> selector, bool ignoreResult);
Hop(const Hop &);
Hop & operator = (const Hop &);
- Hop(Hop &&) = default;
- Hop & operator = (Hop &&) = default;
+ Hop(Hop &&) noexcept = default;
+ Hop & operator = (Hop &&) noexcept = default;
~Hop();
diff --git a/messagebus/src/vespa/messagebus/routing/route.cpp b/messagebus/src/vespa/messagebus/routing/route.cpp
index b705847c3a5..d3953a8e15d 100644
--- a/messagebus/src/vespa/messagebus/routing/route.cpp
+++ b/messagebus/src/vespa/messagebus/routing/route.cpp
@@ -8,30 +8,30 @@ Route::Route() :
_hops()
{ }
-Route::Route(const std::vector<Hop> &lst) :
- _hops(lst)
+Route::Route(std::vector<Hop> lst) :
+ _hops(std::move(lst))
{ }
Route::~Route() { }
Route &
-Route::addHop(const Hop &hop)
+Route::addHop(Hop hop)
{
- _hops.push_back(hop);
+ _hops.emplace_back(std::move(hop));
return *this;
}
Route &
-Route::setHop(uint32_t i, const Hop &hop)
+Route::setHop(uint32_t i, Hop hop)
{
- _hops[i] = hop;
+ _hops[i] = std::move(hop);
return *this;
}
Hop
Route::removeHop(uint32_t i)
{
- Hop ret = _hops[i];
+ Hop ret = std::move(_hops[i]);
_hops.erase(_hops.begin() + i);
return ret;
}
diff --git a/messagebus/src/vespa/messagebus/routing/route.h b/messagebus/src/vespa/messagebus/routing/route.h
index a2a01648cfe..e7542f77e00 100644
--- a/messagebus/src/vespa/messagebus/routing/route.h
+++ b/messagebus/src/vespa/messagebus/routing/route.h
@@ -38,6 +38,10 @@ public:
* Create a Route that contains no hops
*/
Route();
+ Route(const Route &) = default;
+ Route & operator = (const Route &) = default;
+ Route(Route &&) noexcept = default;
+ Route & operator = (Route && ) noexcept = default;
~Route();
/**
@@ -45,7 +49,7 @@ public:
*
* @param hops The hops to instantiate with.
*/
- Route(const std::vector<Hop> &hops);
+ Route(std::vector<Hop> hops);
/**
* Returns whether or not there are any hops in this route.
@@ -83,7 +87,7 @@ public:
* @param hop The hop to add.
* @return This, to allow chaining.
*/
- Route &addHop(const Hop &hop);
+ Route &addHop(Hop hop);
/**
* Sets the hop at a given index.
@@ -92,7 +96,7 @@ public:
* @param hop The hop to set.
* @return This, to allow chaining.
*/
- Route &setHop(uint32_t i, const Hop &hop);
+ Route &setHop(uint32_t i, Hop hop);
/**
* Removes the hop at a given index.
diff --git a/messagebus/src/vespa/messagebus/routing/routeparser.cpp b/messagebus/src/vespa/messagebus/routing/routeparser.cpp
index 668f14f9801..3bc9b57d1e7 100644
--- a/messagebus/src/vespa/messagebus/routing/routeparser.cpp
+++ b/messagebus/src/vespa/messagebus/routing/routeparser.cpp
@@ -129,9 +129,9 @@ RouteParser::createRoute(stringref str)
if (hop.hasDirectives() &&
hop.getDirective(0)->getType() == IHopDirective::TYPE_ERROR)
{
- return Route().addHop(hop);
+ return std::move(Route().addHop(std::move(hop)));
}
- ret.addHop(hop);
+ ret.addHop(std::move(hop));
}
from = at + 1;
} else if (str[at] == '[') {
diff --git a/messagebus/src/vespa/messagebus/routing/routingcontext.cpp b/messagebus/src/vespa/messagebus/routing/routingcontext.cpp
index 27be7a44e57..12aaa160eab 100644
--- a/messagebus/src/vespa/messagebus/routing/routingcontext.cpp
+++ b/messagebus/src/vespa/messagebus/routing/routingcontext.cpp
@@ -53,8 +53,8 @@ RoutingContext::getMatchedRecipients(std::vector<Route> &ret) const
if (done.find(key) == done.end()) {
Route add = *it;
add.setHop(0, hop);
- add.getHop(0).setDirective(_directive, dir);
- ret.push_back(add);
+ add.getHop(0).setDirective(_directive, std::move(dir));
+ ret.push_back(std::move(add));
done.insert(key);
}
}
@@ -199,18 +199,16 @@ RoutingContext::getChildIterator()
}
void
-RoutingContext::addChild(const Route &route)
+RoutingContext::addChild(Route route)
{
- _node.addChild(route);
+ _node.addChild(std::move(route));
}
void
-RoutingContext::addChildren(const std::vector<Route> &routes)
+RoutingContext::addChildren(std::vector<Route> routes)
{
- for (std::vector<Route>::const_iterator it = routes.begin();
- it != routes.end(); ++it)
- {
- addChild(*it);
+ for (auto & route : routes) {
+ addChild(std::move(route));
}
}
diff --git a/messagebus/src/vespa/messagebus/routing/routingcontext.h b/messagebus/src/vespa/messagebus/routing/routingcontext.h
index 4b48e821640..ec17c05a170 100644
--- a/messagebus/src/vespa/messagebus/routing/routingcontext.h
+++ b/messagebus/src/vespa/messagebus/routing/routingcontext.h
@@ -248,7 +248,7 @@ public:
*
* @param route The route to contain in the child context.
*/
- void addChild(const Route &route);
+ void addChild(Route route);
/**
* This is a convenience method to more easily add a list of children to this. It will simply call the {@link
@@ -256,7 +256,7 @@ public:
*
* @param routes A list of routes to add as children.
*/
- void addChildren(const std::vector<Route> &routes);
+ void addChildren(std::vector<Route> routes);
/**
* Returns the local mirror of the system's name server.
diff --git a/messagebus/src/vespa/messagebus/routing/routingnode.cpp b/messagebus/src/vespa/messagebus/routing/routingnode.cpp
index 6e100999e1d..fc0845e5316 100644
--- a/messagebus/src/vespa/messagebus/routing/routingnode.cpp
+++ b/messagebus/src/vespa/messagebus/routing/routingnode.cpp
@@ -38,7 +38,7 @@ RoutingNode::RoutingNode(MessageBus &mbus, INetwork &net, Resender *resender,
_shouldRetry(false)
{ }
-RoutingNode::RoutingNode(RoutingNode &parent, const Route &route)
+RoutingNode::RoutingNode(RoutingNode &parent, Route route)
: _mbus(parent._mbus),
_net(parent._net),
_resender(parent._resender),
@@ -51,7 +51,7 @@ RoutingNode::RoutingNode(RoutingNode &parent, const Route &route)
_pending(0),
_msg(parent._msg),
_reply(),
- _route(route),
+ _route(std::move(route)),
_policy(),
_routingContext(),
_serviceAddress(),
@@ -126,7 +126,7 @@ RoutingNode::prepareForRetry()
void
RoutingNode::notifyParent()
{
- if (_serviceAddress.get() != nullptr) {
+ if (_serviceAddress) {
_net.freeServiceAddress(*this);
}
tryIgnoreResult();
@@ -141,9 +141,9 @@ RoutingNode::notifyParent()
}
void
-RoutingNode::addChild(const Route &route)
+RoutingNode::addChild(Route route)
{
- RoutingNode *child = new RoutingNode(*this, route);
+ RoutingNode *child = new RoutingNode(*this, std::move(route));
if (shouldIgnoreResult()) {
child->_route.getHop(0).setIgnoreResult(true);
}
@@ -404,9 +404,8 @@ RoutingNode::lookupRoute()
Hop &hop = _route.getHop(0);
if (hop.getDirective(0)->getType() == IHopDirective::TYPE_ROUTE) {
RouteDirective &dir = static_cast<RouteDirective&>(*hop.getDirective(0));
- if (table.get() == nullptr || !table->hasRoute(dir.getName())) {
- setError(ErrorCode::ILLEGAL_ROUTE,
- make_string("Route '%s' does not exist.", dir.getName().c_str()));
+ if (!table || !table->hasRoute(dir.getName())) {
+ setError(ErrorCode::ILLEGAL_ROUTE, make_string("Route '%s' does not exist.", dir.getName().c_str()));
return false;
}
insertRoute(*table->getRoute(dir.getName()));
@@ -415,7 +414,7 @@ RoutingNode::lookupRoute()
dir.getName().c_str(), _route.toString().c_str()));
return true;
}
- if (table.get() != nullptr) {
+ if (table) {
string name = hop.getServiceName();
if (table->hasRoute(name)) {
insertRoute(*table->getRoute(name));
@@ -428,16 +427,15 @@ RoutingNode::lookupRoute()
}
void
-RoutingNode::insertRoute(const Route &ins)
+RoutingNode::insertRoute(Route route)
{
- Route route = ins;
if (shouldIgnoreResult()) {
route.getHop(0).setIgnoreResult(true);
}
for (uint32_t i = 1; i < _route.getNumHops(); ++i) {
- route.addHop(_route.getHop(i));
+ route.addHop(std::move(_route.getHop(i)));
}
- _route = route;
+ _route = std::move(route);
}
bool
diff --git a/messagebus/src/vespa/messagebus/routing/routingnode.h b/messagebus/src/vespa/messagebus/routing/routingnode.h
index 8951785c621..dfcd30d06bc 100644
--- a/messagebus/src/vespa/messagebus/routing/routingnode.h
+++ b/messagebus/src/vespa/messagebus/routing/routingnode.h
@@ -56,7 +56,7 @@ private:
* @param parent The parent routing node.
* @param route The route to assign to this.
*/
- RoutingNode(RoutingNode &parent, const Route &route);
+ RoutingNode(RoutingNode &parent, Route route);
/**
* Clears the list of child routing node objects, and frees the memory used
@@ -133,7 +133,7 @@ private:
*
* @param ins The route to insert.
*/
- void insertRoute(const Route &ins);
+ void insertRoute(Route ins);
/**
* This method traverses the current hop looking for an isntance of {@link
@@ -288,7 +288,7 @@ public:
*
* @param route The route to store in the child node.
*/
- void addChild(const Route &route);
+ void addChild(Route route);
/**
* This is a convenience method to call {@link #setError(Error)}.
diff --git a/messagebus/src/vespa/messagebus/routing/routingtable.cpp b/messagebus/src/vespa/messagebus/routing/routingtable.cpp
index 58e1881dc90..5885eb2b67c 100644
--- a/messagebus/src/vespa/messagebus/routing/routingtable.cpp
+++ b/messagebus/src/vespa/messagebus/routing/routingtable.cpp
@@ -30,8 +30,7 @@ RoutingTable::RoutingTable(const RoutingTableSpec &spec) :
{
for (uint32_t i = 0; i < spec.getNumHops(); ++i) {
const HopSpec& hopSpec = spec.getHop(i);
- _hops.insert(std::map<string, HopBlueprint>::value_type(hopSpec.getName(),
- HopBlueprint(hopSpec)));
+ _hops.insert(std::map<string, HopBlueprint>::value_type(hopSpec.getName(), HopBlueprint(hopSpec)));
}
for (uint32_t i = 0; i < spec.getNumRoutes(); ++i) {
Route route;
@@ -39,8 +38,7 @@ RoutingTable::RoutingTable(const RoutingTableSpec &spec) :
for (uint32_t j = 0; j < routeSpec.getNumHops(); ++j) {
route.addHop(Hop(routeSpec.getHop(j)));
}
- _routes.insert(std::map<string, Route>::value_type(routeSpec.getName(),
- route));
+ _routes.insert(std::map<string, Route>::value_type(routeSpec.getName(), std::move(route)));
}
}
diff --git a/messagebus/src/vespa/messagebus/sourcesession.cpp b/messagebus/src/vespa/messagebus/sourcesession.cpp
index dafae0b9b1d..1f6758b92c3 100644
--- a/messagebus/src/vespa/messagebus/sourcesession.cpp
+++ b/messagebus/src/vespa/messagebus/sourcesession.cpp
@@ -41,7 +41,7 @@ SourceSession::send(Message::UP msg, const string &routeName, bool parseIfNotFou
{
bool found = false;
RoutingTable::SP rt = _mbus.getRoutingTable(msg->getProtocol());
- if (rt.get() != nullptr) {
+ if (rt) {
const Route *route = rt->getRoute(routeName);
if (route != nullptr) {
msg->setRoute(*route);