summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/sys
diff options
context:
space:
mode:
authorTed Ross <tross@apache.org>2009-02-24 14:15:28 +0000
committerTed Ross <tross@apache.org>2009-02-24 14:15:28 +0000
commit1b3a5d652c92cf5b091964110f4ba1251acbf9f4 (patch)
tree31bde11f895d8750a67b6a43c5fe4aa6578ac308 /cpp/src/qpid/sys
parent29f3702dedf1753f350a412a6c026df72caa8534 (diff)
downloadqpid-python-1b3a5d652c92cf5b091964110f4ba1251acbf9f4.tar.gz
QPID-1676 - Added client process name and pid to connection object for management.
Supported in C++, Python, and Ruby clients. Still needs to be added to the Java clients. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@747389 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/sys')
-rw-r--r--cpp/src/qpid/sys/SystemInfo.h5
-rwxr-xr-xcpp/src/qpid/sys/posix/SystemInfo.cpp24
-rwxr-xr-xcpp/src/qpid/sys/windows/SystemInfo.cpp19
3 files changed, 48 insertions, 0 deletions
diff --git a/cpp/src/qpid/sys/SystemInfo.h b/cpp/src/qpid/sys/SystemInfo.h
index d43fe34b04..017a05e2c5 100644
--- a/cpp/src/qpid/sys/SystemInfo.h
+++ b/cpp/src/qpid/sys/SystemInfo.h
@@ -73,6 +73,11 @@ namespace SystemInfo {
*/
uint32_t getParentProcessId();
+ /**
+ * Get the name of the current process (i.e. the name of the executable)
+ */
+ std::string getProcessName();
+
}}} // namespace qpid::sys::SystemInfo
diff --git a/cpp/src/qpid/sys/posix/SystemInfo.cpp b/cpp/src/qpid/sys/posix/SystemInfo.cpp
index 938d4861c4..5d9eda605d 100755
--- a/cpp/src/qpid/sys/posix/SystemInfo.cpp
+++ b/cpp/src/qpid/sys/posix/SystemInfo.cpp
@@ -27,6 +27,9 @@
#include <arpa/inet.h>
#include <stdio.h>
#include <unistd.h>
+#include <iostream>
+#include <fstream>
+#include <sstream>
#ifndef HOST_NAME_MAX
# define HOST_NAME_MAX 256
@@ -104,6 +107,27 @@ uint32_t SystemInfo::getParentProcessId()
return (uint32_t) ::getppid();
}
+string SystemInfo::getProcessName()
+{
+ uint32_t pid = getProcessId();
+ string value;
+
+ stringstream pathStream;
+ pathStream << "/proc/" << pid << "/status";
+ ifstream input(pathStream.str().c_str());
+ if (input.good()) {
+ while (!input.eof()) {
+ string key;
+ input >> key;
+ if (key == "Name:") {
+ input >> value;
+ break;
+ }
+ }
+ input.close();
+ }
+ return value;
+}
}} // namespace qpid::sys
diff --git a/cpp/src/qpid/sys/windows/SystemInfo.cpp b/cpp/src/qpid/sys/windows/SystemInfo.cpp
index b887cac58b..dc5c56b6fb 100755
--- a/cpp/src/qpid/sys/windows/SystemInfo.cpp
+++ b/cpp/src/qpid/sys/windows/SystemInfo.cpp
@@ -155,6 +155,25 @@ void SystemInfo::getSystemId (std::string &osName,
machine = "unknown";
break;
}
+
+uint32_t SystemInfo::getProcessId()
+{
+ // TODO: Provide Windows implementation
+ return 0;
+}
+
+uint32_t SystemInfo::getParentProcessId()
+{
+ // TODO: Provide Windows implementation
+ return 0;
+}
+
+std::string SystemInfo::getProcessName()
+{
+ // TODO: Provide Windows implementation
+ return std::string();
+}
+
}
}} // namespace qpid::sys