Added pid() in docker/docker.cpp to get the pid of the container.

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

Branch: refs/heads/master
Commit: bd8f063715cac1547b35bfee20d3a117667d3753
Parents: 4406fb5
Author: Yifan Gu <[email protected]>
Authored: Mon Jun 23 22:52:52 2014 -0700
Committer: Benjamin Hindman <[email protected]>
Committed: Mon Aug 4 15:08:15 2014 -0700

----------------------------------------------------------------------
 src/docker/docker.cpp | 15 +++++++++++++++
 src/docker/docker.hpp |  4 ++++
 2 files changed, 19 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/bd8f0637/src/docker/docker.cpp
----------------------------------------------------------------------
diff --git a/src/docker/docker.cpp b/src/docker/docker.cpp
index 53c0805..1e4f62f 100644
--- a/src/docker/docker.cpp
+++ b/src/docker/docker.cpp
@@ -55,6 +55,21 @@ string Docker::Container::name() const
   return value.as<JSON::String>().value;
 }
 
+pid_t Docker::Container::pid() const
+{
+  map<string, JSON::Value>::const_iterator state =
+    json.values.find("State");
+  CHECK(state != json.values.end());
+  JSON::Value value = state->second;
+  CHECK(value.is<JSON::Object>());
+
+  map<string, JSON::Value>::const_iterator entry =
+    value.as<JSON::Object>().values.find("Pid");
+  CHECK(entry != json.values.end());
+  JSON::Value pid = entry->second;
+  CHECK(pid.is<JSON::Number>());
+  return pid_t(pid.as<JSON::Number>().value);
+}
 
 Future<Option<int> > Docker::run(
     const string& image,

http://git-wip-us.apache.org/repos/asf/mesos/blob/bd8f0637/src/docker/docker.hpp
----------------------------------------------------------------------
diff --git a/src/docker/docker.hpp b/src/docker/docker.hpp
index a43fa58..264dc79 100644
--- a/src/docker/docker.hpp
+++ b/src/docker/docker.hpp
@@ -47,6 +47,10 @@ public:
     // Returns the name of the container.
     std::string name() const;
 
+    // Returns the Pid of the container.
+    // Note: If it returns 0, it means the container is not running.
+    pid_t pid() const;
+
   private:
     JSON::Object json; // JSON returned from 'docker inspect'.
   };

Reply via email to