Moved functions in promises to a common header file.

Review: https://reviews.apache.org/r/44546/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/be1fb947
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/be1fb947
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/be1fb947

Branch: refs/heads/master
Commit: be1fb947b5bdd178ce05fd1c20e26d408fcd0d63
Parents: adcd8b6
Author: Anurag Singh <anurag.prakash.si...@gmail.com>
Authored: Wed Apr 6 15:08:34 2016 -0400
Committer: Kapil Arya <ka...@mesosphere.io>
Committed: Wed Apr 6 18:36:18 2016 -0400

----------------------------------------------------------------------
 src/master/detector/standalone.cpp | 64 ++------------------------
 src/master/detector/zookeeper.cpp  | 80 +++++----------------------------
 2 files changed, 15 insertions(+), 129 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/be1fb947/src/master/detector/standalone.cpp
----------------------------------------------------------------------
diff --git a/src/master/detector/standalone.cpp 
b/src/master/detector/standalone.cpp
index 6e21e65..0b5de9e 100644
--- a/src/master/detector/standalone.cpp
+++ b/src/master/detector/standalone.cpp
@@ -50,63 +50,6 @@ namespace mesos {
 namespace master {
 namespace detector {
 
-// TODO(bmahler): Consider moving these kinds of helpers into
-// libprocess or a common header within mesos.
-namespace promises {
-
-// Helper for setting a set of Promises.
-template <typename T>
-void set(std::set<Promise<T>*>* promises, const T& t)
-{
-  foreach (Promise<T>* promise, *promises) {
-    promise->set(t);
-    delete promise;
-  }
-  promises->clear();
-}
-
-
-// Helper for failing a set of Promises.
-template <typename T>
-void fail(std::set<Promise<T>*>* promises, const string& failure)
-{
-  foreach (Promise<Option<MasterInfo>>* promise, *promises) {
-    promise->fail(failure);
-    delete promise;
-  }
-  promises->clear();
-}
-
-
-// Helper for discarding a set of Promises.
-template <typename T>
-void discard(std::set<Promise<T>*>* promises)
-{
-  foreach (Promise<T>* promise, *promises) {
-    promise->discard();
-    delete promise;
-  }
-  promises->clear();
-}
-
-
-// Helper for discarding an individual promise in the set.
-template <typename T>
-void discard(std::set<Promise<T>*>* promises, const Future<T>& future)
-{
-  foreach (Promise<T>* promise, *promises) {
-    if (promise->future() == future) {
-      promise->discard();
-      promises->erase(promise);
-      delete promise;
-      return;
-    }
-  }
-}
-
-} // namespace promises {
-
-
 class StandaloneMasterDetectorProcess
   : public Process<StandaloneMasterDetectorProcess>
 {
@@ -119,14 +62,14 @@ public:
 
   ~StandaloneMasterDetectorProcess()
   {
-    promises::discard(&promises);
+    discardPromises(&promises);
   }
 
   void appoint(const Option<MasterInfo>& leader_)
   {
     leader = leader_;
 
-    promises::set(&promises, leader);
+    setPromises(&promises, leader);
   }
 
   Future<Option<MasterInfo>> detect(
@@ -149,7 +92,7 @@ private:
   void discard(const Future<Option<MasterInfo>>& future)
   {
     // Discard the promise holding this future.
-    promises::discard(&promises, future);
+    discardPromises(&promises, future);
   }
 
   Option<MasterInfo> leader; // The appointed master.
@@ -208,7 +151,6 @@ Future<Option<MasterInfo>> StandaloneMasterDetector::detect(
   return dispatch(process, &StandaloneMasterDetectorProcess::detect, previous);
 }
 
-
 } // namespace detector {
 } // namespace master {
 } // namespace mesos {

http://git-wip-us.apache.org/repos/asf/mesos/blob/be1fb947/src/master/detector/zookeeper.cpp
----------------------------------------------------------------------
diff --git a/src/master/detector/zookeeper.cpp 
b/src/master/detector/zookeeper.cpp
index fe26e22..8f226b5 100644
--- a/src/master/detector/zookeeper.cpp
+++ b/src/master/detector/zookeeper.cpp
@@ -57,63 +57,6 @@ namespace detector {
 
 const Duration MASTER_DETECTOR_ZK_SESSION_TIMEOUT = Seconds(10);
 
-// TODO(bmahler): Consider moving these kinds of helpers into
-// libprocess or a common header within mesos.
-namespace promises {
-
-// Helper for setting a set of Promises.
-template <typename T>
-void set(std::set<Promise<T>*>* promises, const T& t)
-{
-  foreach (Promise<T>* promise, *promises) {
-    promise->set(t);
-    delete promise;
-  }
-  promises->clear();
-}
-
-
-// Helper for failing a set of Promises.
-template <typename T>
-void fail(std::set<Promise<T>*>* promises, const string& failure)
-{
-  foreach (Promise<Option<MasterInfo>>* promise, *promises) {
-    promise->fail(failure);
-    delete promise;
-  }
-  promises->clear();
-}
-
-
-// Helper for discarding a set of Promises.
-template <typename T>
-void discard(std::set<Promise<T>*>* promises)
-{
-  foreach (Promise<T>* promise, *promises) {
-    promise->discard();
-    delete promise;
-  }
-  promises->clear();
-}
-
-
-// Helper for discarding an individual promise in the set.
-template <typename T>
-void discard(std::set<Promise<T>*>* promises, const Future<T>& future)
-{
-  foreach (Promise<T>* promise, *promises) {
-    if (promise->future() == future) {
-      promise->discard();
-      promises->erase(promise);
-      delete promise;
-      return;
-    }
-  }
-}
-
-} // namespace promises {
-
-
 class ZooKeeperMasterDetectorProcess
   : public Process<ZooKeeperMasterDetectorProcess>
 {
@@ -168,7 +111,7 @@ 
ZooKeeperMasterDetectorProcess::ZooKeeperMasterDetectorProcess(
 
 ZooKeeperMasterDetectorProcess::~ZooKeeperMasterDetectorProcess()
 {
-  promises::discard(&promises);
+  discardPromises(&promises);
 }
 
 
@@ -183,7 +126,7 @@ void ZooKeeperMasterDetectorProcess::discard(
     const Future<Option<MasterInfo>>& future)
 {
   // Discard the promise holding this future.
-  promises::discard(&promises, future);
+  discardPromises(&promises, future);
 }
 
 
@@ -224,7 +167,7 @@ void ZooKeeperMasterDetectorProcess::detected(
     error = Error(_leader.failure());
     leader = None();
 
-    promises::fail(&promises, _leader.failure());
+    failPromises(&promises, _leader.failure());
 
     return;
   }
@@ -232,7 +175,7 @@ void ZooKeeperMasterDetectorProcess::detected(
   if (_leader.get().isNone()) {
     leader = None();
 
-    promises::set(&promises, leader);
+    setPromises(&promises, leader);
   } else {
     // Fetch the data associated with the leader.
     group->data(_leader.get().get())
@@ -253,12 +196,12 @@ void ZooKeeperMasterDetectorProcess::fetched(
 
   if (data.isFailed()) {
     leader = None();
-    promises::fail(&promises, data.failure());
+    failPromises(&promises, data.failure());
     return;
   } else if (data.get().isNone()) {
     // Membership is gone before we can read its data.
     leader = None();
-    promises::set(&promises, leader);
+    setPromises(&promises, leader);
     return;
   }
 
@@ -276,7 +219,8 @@ void ZooKeeperMasterDetectorProcess::fetched(
     MasterInfo info;
     if (!info.ParseFromString(data.get().get())) {
       leader = None();
-      promises::fail(&promises, "Failed to parse data into MasterInfo");
+      failPromises(&promises,
+          "Failed to parse data into MasterInfo");
       return;
     }
     LOG(WARNING) << "Leading master " << info.pid()
@@ -290,7 +234,7 @@ void ZooKeeperMasterDetectorProcess::fetched(
 
     if (object.isError()) {
       leader = None();
-      promises::fail(
+      failPromises(
           &promises,
           "Failed to parse data into valid JSON: " + object.error());
       return;
@@ -301,7 +245,7 @@ void ZooKeeperMasterDetectorProcess::fetched(
 
     if (info.isError()) {
       leader = None();
-      promises::fail(
+      failPromises(
           &promises,
           "Failed to parse JSON into a valid MasterInfo protocol buffer: " +
           info.error());
@@ -311,7 +255,7 @@ void ZooKeeperMasterDetectorProcess::fetched(
     leader = info.get();
   } else {
     leader = None();
-    promises::fail(
+    failPromises(
         &promises,
         "Failed to parse data of unknown label '" + label.get() + "'");
     return;
@@ -320,7 +264,7 @@ void ZooKeeperMasterDetectorProcess::fetched(
   LOG(INFO) << "A new leading master (UPID="
             << UPID(leader.get().pid()) << ") is detected";
 
-  promises::set(&promises, leader);
+  setPromises(&promises, leader);
 }
 
 

Reply via email to