You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by jo...@apache.org on 2015/12/15 19:19:06 UTC
mesos git commit: Windows: Stout: Unified POSIX and Windows
implementation of process.hpp.
Repository: mesos
Updated Branches:
refs/heads/master bdaa698e5 -> 925e99ea7
Windows: Stout: Unified POSIX and Windows implementation of process.hpp.
Review: https://reviews.apache.org/r/40102
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/925e99ea
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/925e99ea
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/925e99ea
Branch: refs/heads/master
Commit: 925e99ea71fd23ee5cca4d0086e57d8866ada086
Parents: bdaa698
Author: Alex Clemmer <cl...@gmail.com>
Authored: Tue Dec 15 09:53:29 2015 -0800
Committer: Joris Van Remoortere <jo...@gmail.com>
Committed: Tue Dec 15 10:18:28 2015 -0800
----------------------------------------------------------------------
.../3rdparty/stout/include/Makefile.am | 2 -
.../stout/include/stout/os/posix/process.hpp | 177 -------------------
.../3rdparty/stout/include/stout/os/process.hpp | 165 ++++++++++++++++-
.../stout/include/stout/os/windows/process.hpp | 51 ------
4 files changed, 158 insertions(+), 237 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/925e99ea/3rdparty/libprocess/3rdparty/stout/include/Makefile.am
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/3rdparty/stout/include/Makefile.am b/3rdparty/libprocess/3rdparty/stout/include/Makefile.am
index a68de8b..d1ef6f0 100644
--- a/3rdparty/libprocess/3rdparty/stout/include/Makefile.am
+++ b/3rdparty/libprocess/3rdparty/stout/include/Makefile.am
@@ -94,7 +94,6 @@ nobase_include_HEADERS = \
stout/os/posix/killtree.hpp \
stout/os/posix/ls.hpp \
stout/os/posix/mkdtemp.hpp \
- stout/os/posix/process.hpp \
stout/os/posix/pstree.hpp \
stout/os/posix/sendfile.hpp \
stout/os/posix/shell.hpp \
@@ -109,7 +108,6 @@ nobase_include_HEADERS = \
stout/os/windows/killtree.hpp \
stout/os/windows/ls.hpp \
stout/os/windows/mkdtemp.hpp \
- stout/os/windows/process.hpp \
stout/os/windows/pstree.hpp \
stout/os/windows/sendfile.hpp \
stout/os/windows/shell.hpp \
http://git-wip-us.apache.org/repos/asf/mesos/blob/925e99ea/3rdparty/libprocess/3rdparty/stout/include/stout/os/posix/process.hpp
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/3rdparty/stout/include/stout/os/posix/process.hpp b/3rdparty/libprocess/3rdparty/stout/include/stout/os/posix/process.hpp
deleted file mode 100644
index ed28e66..0000000
--- a/3rdparty/libprocess/3rdparty/stout/include/stout/os/posix/process.hpp
+++ /dev/null
@@ -1,177 +0,0 @@
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef __STOUT_OS_POSIX_PROCESS_HPP__
-#define __STOUT_OS_POSIX_PROCESS_HPP__
-
-#include <sys/types.h> // For pid_t.
-
-#include <list>
-#include <ostream>
-#include <sstream>
-#include <string>
-
-#include <stout/bytes.hpp>
-#include <stout/duration.hpp>
-#include <stout/none.hpp>
-#include <stout/option.hpp>
-#include <stout/strings.hpp>
-
-
-namespace os {
-
-struct Process
-{
- Process(pid_t _pid,
- pid_t _parent,
- pid_t _group,
- const Option<pid_t>& _session,
- const Option<Bytes>& _rss,
- const Option<Duration>& _utime,
- const Option<Duration>& _stime,
- const std::string& _command,
- bool _zombie)
- : pid(_pid),
- parent(_parent),
- group(_group),
- session(_session),
- rss(_rss),
- utime(_utime),
- stime(_stime),
- command(_command),
- zombie(_zombie) {}
-
- const pid_t pid;
- const pid_t parent;
- const pid_t group;
- const Option<pid_t> session;
- const Option<Bytes> rss;
- const Option<Duration> utime;
- const Option<Duration> stime;
- const std::string command;
- const bool zombie;
-
- // TODO(bmahler): Add additional data as needed.
-
- bool operator<(const Process& p) const { return pid < p.pid; }
- bool operator<=(const Process& p) const { return pid <= p.pid; }
- bool operator>(const Process& p) const { return pid > p.pid; }
- bool operator>=(const Process& p) const { return pid >= p.pid; }
- bool operator==(const Process& p) const { return pid == p.pid; }
- bool operator!=(const Process& p) const { return pid != p.pid; }
-};
-
-
-class ProcessTree
-{
-public:
- // Returns a process subtree rooted at the specified PID, or none if
- // the specified pid could not be found in this process tree.
- Option<ProcessTree> find(pid_t pid) const
- {
- if (process.pid == pid) {
- return *this;
- }
-
- foreach (const ProcessTree& tree, children) {
- Option<ProcessTree> option = tree.find(pid);
- if (option.isSome()) {
- return option;
- }
- }
-
- return None();
- }
-
- // Checks if the specified pid is contained in this process tree.
- bool contains(pid_t pid) const
- {
- return find(pid).isSome();
- }
-
- operator Process() const
- {
- return process;
- }
-
- operator pid_t() const
- {
- return process.pid;
- }
-
- const Process process;
- const std::list<ProcessTree> children;
-
-private:
- friend struct Fork;
- friend Try<ProcessTree> pstree(pid_t, const std::list<Process>&);
-
- ProcessTree(
- const Process& _process,
- const std::list<ProcessTree>& _children)
- : process(_process),
- children(_children) {}
-};
-
-
-inline std::ostream& operator<<(std::ostream& stream, const ProcessTree& tree)
-{
- if (tree.children.empty()) {
- stream << "--- " << tree.process.pid << " ";
- if (tree.process.zombie) {
- stream << "(" << tree.process.command << ")";
- } else {
- stream << tree.process.command;
- }
- } else {
- stream << "-+- " << tree.process.pid << " ";
- if (tree.process.zombie) {
- stream << "(" << tree.process.command << ")";
- } else {
- stream << tree.process.command;
- }
- size_t size = tree.children.size();
- foreach (const ProcessTree& child, tree.children) {
- std::ostringstream out;
- out << child;
- stream << "\n";
- if (--size != 0) {
- stream << " |" << strings::replace(out.str(), "\n", "\n |");
- } else {
- stream << " \\" << strings::replace(out.str(), "\n", "\n ");
- }
- }
- }
- return stream;
-}
-
-} // namespace os {
-
-
-// An overload of stringify for printing a list of process trees
-// (since printing a process tree is rather particular).
-inline std::string stringify(const std::list<os::ProcessTree>& list)
-{
- std::ostringstream out;
- out << "[ " << std::endl;
- std::list<os::ProcessTree>::const_iterator iterator = list.begin();
- while (iterator != list.end()) {
- out << stringify(*iterator);
- if (++iterator != list.end()) {
- out << std::endl << std::endl;
- }
- }
- out << std::endl << "]";
- return out.str();
-}
-
-#endif // __STOUT_OS_POSIX_PROCESS_HPP__
http://git-wip-us.apache.org/repos/asf/mesos/blob/925e99ea/3rdparty/libprocess/3rdparty/stout/include/stout/os/process.hpp
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/3rdparty/stout/include/stout/os/process.hpp b/3rdparty/libprocess/3rdparty/stout/include/stout/os/process.hpp
index 4ed0c47..a91a9d4 100644
--- a/3rdparty/libprocess/3rdparty/stout/include/stout/os/process.hpp
+++ b/3rdparty/libprocess/3rdparty/stout/include/stout/os/process.hpp
@@ -13,14 +13,165 @@
#ifndef __STOUT_OS_PROCESS_HPP__
#define __STOUT_OS_PROCESS_HPP__
+#include <sys/types.h> // For pid_t.
-// For readability, we minimize the number of #ifdef blocks in the code by
-// splitting platform specifc system calls into separate directories.
-#ifdef __WINDOWS__
-#include <stout/os/windows/process.hpp>
-#else
-#include <stout/os/posix/process.hpp>
-#endif // __WINDOWS__
+#include <list>
+#include <ostream>
+#include <sstream>
+#include <string>
+#include <stout/bytes.hpp>
+#include <stout/duration.hpp>
+#include <stout/none.hpp>
+#include <stout/option.hpp>
+#include <stout/strings.hpp>
+
+
+namespace os {
+
+struct Process
+{
+ Process(pid_t _pid,
+ pid_t _parent,
+ pid_t _group,
+ const Option<pid_t>& _session,
+ const Option<Bytes>& _rss,
+ const Option<Duration>& _utime,
+ const Option<Duration>& _stime,
+ const std::string& _command,
+ bool _zombie)
+ : pid(_pid),
+ parent(_parent),
+ group(_group),
+ session(_session),
+ rss(_rss),
+ utime(_utime),
+ stime(_stime),
+ command(_command),
+ zombie(_zombie) {}
+
+ const pid_t pid;
+ const pid_t parent;
+ const pid_t group;
+ const Option<pid_t> session;
+ const Option<Bytes> rss;
+ const Option<Duration> utime;
+ const Option<Duration> stime;
+ const std::string command;
+ const bool zombie;
+
+ // TODO(bmahler): Add additional data as needed.
+
+ bool operator<(const Process& p) const { return pid < p.pid; }
+ bool operator<=(const Process& p) const { return pid <= p.pid; }
+ bool operator>(const Process& p) const { return pid > p.pid; }
+ bool operator>=(const Process& p) const { return pid >= p.pid; }
+ bool operator==(const Process& p) const { return pid == p.pid; }
+ bool operator!=(const Process& p) const { return pid != p.pid; }
+};
+
+
+class ProcessTree
+{
+public:
+ // Returns a process subtree rooted at the specified PID, or none if
+ // the specified pid could not be found in this process tree.
+ Option<ProcessTree> find(pid_t pid) const
+ {
+ if (process.pid == pid) {
+ return *this;
+ }
+
+ foreach (const ProcessTree& tree, children) {
+ Option<ProcessTree> option = tree.find(pid);
+ if (option.isSome()) {
+ return option;
+ }
+ }
+
+ return None();
+ }
+
+ // Checks if the specified pid is contained in this process tree.
+ bool contains(pid_t pid) const
+ {
+ return find(pid).isSome();
+ }
+
+ operator Process() const
+ {
+ return process;
+ }
+
+ operator pid_t() const
+ {
+ return process.pid;
+ }
+
+ const Process process;
+ const std::list<ProcessTree> children;
+
+private:
+ friend struct Fork;
+ friend Try<ProcessTree> pstree(pid_t, const std::list<Process>&);
+
+ ProcessTree(
+ const Process& _process,
+ const std::list<ProcessTree>& _children)
+ : process(_process),
+ children(_children) {}
+};
+
+
+inline std::ostream& operator<<(std::ostream& stream, const ProcessTree& tree)
+{
+ if (tree.children.empty()) {
+ stream << "--- " << tree.process.pid << " ";
+ if (tree.process.zombie) {
+ stream << "(" << tree.process.command << ")";
+ } else {
+ stream << tree.process.command;
+ }
+ } else {
+ stream << "-+- " << tree.process.pid << " ";
+ if (tree.process.zombie) {
+ stream << "(" << tree.process.command << ")";
+ } else {
+ stream << tree.process.command;
+ }
+ size_t size = tree.children.size();
+ foreach (const ProcessTree& child, tree.children) {
+ std::ostringstream out;
+ out << child;
+ stream << "\n";
+ if (--size != 0) {
+ stream << " |" << strings::replace(out.str(), "\n", "\n |");
+ } else {
+ stream << " \\" << strings::replace(out.str(), "\n", "\n ");
+ }
+ }
+ }
+ return stream;
+}
+
+} // namespace os {
+
+
+// An overload of stringify for printing a list of process trees
+// (since printing a process tree is rather particular).
+inline std::string stringify(const std::list<os::ProcessTree>& list)
+{
+ std::ostringstream out;
+ out << "[ " << std::endl;
+ std::list<os::ProcessTree>::const_iterator iterator = list.begin();
+ while (iterator != list.end()) {
+ out << stringify(*iterator);
+ if (++iterator != list.end()) {
+ out << std::endl << std::endl;
+ }
+ }
+ out << std::endl << "]";
+ return out.str();
+}
#endif // __STOUT_OS_PROCESS_HPP__
http://git-wip-us.apache.org/repos/asf/mesos/blob/925e99ea/3rdparty/libprocess/3rdparty/stout/include/stout/os/windows/process.hpp
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/3rdparty/stout/include/stout/os/windows/process.hpp b/3rdparty/libprocess/3rdparty/stout/include/stout/os/windows/process.hpp
deleted file mode 100644
index 8dfd330..0000000
--- a/3rdparty/libprocess/3rdparty/stout/include/stout/os/windows/process.hpp
+++ /dev/null
@@ -1,51 +0,0 @@
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef __STOUT_OS_WINDOWS_PROCESS_HPP__
-#define __STOUT_OS_WINDOWS_PROCESS_HPP__
-
-#include <list>
-#include <ostream>
-#include <string>
-
-
-namespace os {
-
-struct Process
-{
- UNIMPLEMENTED;
-};
-
-
-class ProcessTree
-{
- UNIMPLEMENTED;
-};
-
-
-inline std::ostream& operator<<(std::ostream& stream, const ProcessTree& tree)
-{
- UNIMPLEMENTED;
-}
-
-} // namespace os {
-
-
-// An overload of stringify for printing a list of process trees
-// (since printing a process tree is rather particular).
-inline std::string stringify(const std::list<os::ProcessTree>& list)
-{
- UNIMPLEMENTED;
-}
-
-
-#endif // __STOUT_OS_WINDOWS_PROCESS_HPP__