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.

Reply via email to