Used `std::move` for `Event`s consumption in the master. Review: https://reviews.apache.org/r/63641/
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/c9e6a03c Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/c9e6a03c Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/c9e6a03c Branch: refs/heads/master Commit: c9e6a03c02e9f8dc040b937ccd5ae89e5530fd7e Parents: 8014e3f Author: Dmitry Zhuk <dz...@twopensource.com> Authored: Tue Dec 5 11:21:11 2017 -0800 Committer: Michael Park <mp...@apache.org> Committed: Tue Dec 5 11:21:11 2017 -0800 ---------------------------------------------------------------------- src/master/master.cpp | 28 +++++++++++----------------- src/master/master.hpp | 6 +++--- 2 files changed, 14 insertions(+), 20 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/c9e6a03c/src/master/master.cpp ---------------------------------------------------------------------- diff --git a/src/master/master.cpp b/src/master/master.cpp index 1fff323..e8257e7 100644 --- a/src/master/master.cpp +++ b/src/master/master.cpp @@ -1590,19 +1590,19 @@ void Master::consume(ExitedEvent&& event) : Option<string>::none(); // Necessary to disambiguate below. - typedef void(Self::*F)(const ExitedEvent&); + typedef void(Self::*F)(ExitedEvent&&); if (principal.isSome() && frameworks.limiters.contains(principal.get()) && frameworks.limiters[principal.get()].isSome()) { - frameworks.limiters[principal.get()].get()->limiter->acquire() - .onReady(defer(self(), static_cast<F>(&Self::_consume), event)); + frameworks.limiters[principal.get()].get()->limiter->acquire().onReady( + defer(self(), static_cast<F>(&Self::_consume), std::move(event))); } else if ((principal.isNone() || !frameworks.limiters.contains(principal.get())) && isRegisteredFramework && frameworks.defaultLimiter.isSome()) { - frameworks.defaultLimiter.get()->limiter->acquire() - .onReady(defer(self(), static_cast<F>(&Self::_consume), event)); + frameworks.defaultLimiter.get()->limiter->acquire().onReady( + defer(self(), static_cast<F>(&Self::_consume), std::move(event))); } else { _consume(std::move(event)); } @@ -1612,7 +1612,7 @@ void Master::consume(ExitedEvent&& event) // TODO(greggomann): Change this to accept an `Option<Principal>` // when MESOS-7202 is resolved. void Master::throttled( - const MessageEvent& event, + MessageEvent&& event, const Option<string>& principal) { // We already know a RateLimiter is used to throttle this event so @@ -1625,13 +1625,11 @@ void Master::throttled( frameworks.defaultLimiter.get()->messages--; } - // TODO(dzhuk): Use std::move(event), when defer supports - // rvalue references as handler parameters. - _consume(event); + _consume(std::move(event)); } -void Master::_consume(const MessageEvent& event) +void Master::_consume(MessageEvent&& event) { // Obtain the principal before processing the Message because the // mapping may be deleted in handling 'UnregisterFrameworkMessage' @@ -1641,9 +1639,7 @@ void Master::_consume(const MessageEvent& event) ? frameworks.principals[event.message.from] : Option<string>::none(); - // TODO(dzhuk): Use std::move(event), when defer supports - // rvalue references as handler parameters. - ProtobufProcess<Master>::consume(MessageEvent(event)); + ProtobufProcess<Master>::consume(std::move(event)); // Increment 'messages_processed' counter if it still exists. // Note that it could be removed in handling @@ -1683,11 +1679,9 @@ void Master::exceededCapacity( } -void Master::_consume(const ExitedEvent& event) +void Master::_consume(ExitedEvent&& event) { - // TODO(dzhuk): Use std::move(event), when defer supports - // rvalue references as handler parameters. - Process<Master>::consume(ExitedEvent(event)); + Process<Master>::consume(std::move(event)); } http://git-wip-us.apache.org/repos/asf/mesos/blob/c9e6a03c/src/master/master.hpp ---------------------------------------------------------------------- diff --git a/src/master/master.hpp b/src/master/master.hpp index d7fa536..a721131 100644 --- a/src/master/master.hpp +++ b/src/master/master.hpp @@ -572,12 +572,12 @@ protected: // 'principal' being None indicates it is throttled by // 'defaultLimiter'. void throttled( - const process::MessageEvent& event, + process::MessageEvent&& event, const Option<std::string>& principal); // Continuations of consume(). - void _consume(const process::MessageEvent& event); - void _consume(const process::ExitedEvent& event); + void _consume(process::MessageEvent&& event); + void _consume(process::ExitedEvent&& event); // Helper method invoked when the capacity for a framework // principal is exceeded.