diff options
author | Henning Baldersheim <balder@oath.com> | 2018-03-22 23:07:53 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@oath.com> | 2018-04-03 18:33:28 +0200 |
commit | 2efcbf7038eb951c140e9aacd32105772c5d8ddb (patch) | |
tree | 2e36942fa5b19a37206f17eb0b6d7351115cbd87 /messagebus | |
parent | 2e1264f793b4107759d3e933ea70375418cec4d0 (diff) |
Use std::move and move constructors where benefiscal.
Diffstat (limited to 'messagebus')
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); |