summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/broker
diff options
context:
space:
mode:
authorCarl C. Trieloff <cctrieloff@apache.org>2008-02-28 18:55:21 +0000
committerCarl C. Trieloff <cctrieloff@apache.org>2008-02-28 18:55:21 +0000
commitac3f850123c903f00c163d6d2dbad22d98aec7a2 (patch)
tree2e622a3e9349a9062454d16bf4bca83a5a3e9d90 /cpp/src/qpid/broker
parent1820dd421a096ed184a08deee9512e809312fed2 (diff)
downloadqpid-python-ac3f850123c903f00c163d6d2dbad22d98aec7a2.tar.gz
QPID-820 from tross
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@632087 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/broker')
-rw-r--r--cpp/src/qpid/broker/Broker.cpp7
-rw-r--r--cpp/src/qpid/broker/Broker.h2
-rw-r--r--cpp/src/qpid/broker/System.cpp48
-rw-r--r--cpp/src/qpid/broker/System.h51
4 files changed, 107 insertions, 1 deletions
diff --git a/cpp/src/qpid/broker/Broker.cpp b/cpp/src/qpid/broker/Broker.cpp
index 9bfa868d9c..8b70831cf7 100644
--- a/cpp/src/qpid/broker/Broker.cpp
+++ b/cpp/src/qpid/broker/Broker.cpp
@@ -131,13 +131,18 @@ Broker::Broker(const Broker::Options& conf) :
managementAgent = ManagementAgent::getAgent ();
managementAgent->setInterval (conf.mgmtPubInterval);
- mgmtObject = management::Broker::shared_ptr (new management::Broker (this, 0, 0, conf.port));
+ System* system = new System ();
+ systemObject = System::shared_ptr (system);
+
+ mgmtObject = management::Broker::shared_ptr (new management::Broker (this, system, conf.port));
mgmtObject->set_workerThreads (conf.workerThreads);
mgmtObject->set_maxConns (conf.maxConnections);
mgmtObject->set_connBacklog (conf.connectionBacklog);
mgmtObject->set_stagingThreshold (conf.stagingThreshold);
mgmtObject->set_mgmtPubInterval (conf.mgmtPubInterval);
mgmtObject->set_version (PACKAGE_VERSION);
+ mgmtObject->set_dataDirEnabled (dataDir.isEnabled ());
+ mgmtObject->set_dataDir (dataDir.getPath ());
managementAgent->addObject (mgmtObject, 1, 0);
diff --git a/cpp/src/qpid/broker/Broker.h b/cpp/src/qpid/broker/Broker.h
index 153eabc6b3..9e5191825d 100644
--- a/cpp/src/qpid/broker/Broker.h
+++ b/cpp/src/qpid/broker/Broker.h
@@ -32,6 +32,7 @@
#include "SessionManager.h"
#include "PreviewSessionManager.h"
#include "Vhost.h"
+#include "System.h"
#include "qpid/management/Manageable.h"
#include "qpid/management/ManagementAgent.h"
#include "qpid/management/Broker.h"
@@ -142,6 +143,7 @@ class Broker : public sys::Runnable, public Plugin::Target,
management::ManagementAgent::shared_ptr managementAgent;
management::Broker::shared_ptr mgmtObject;
Vhost::shared_ptr vhostObject;
+ System::shared_ptr systemObject;
void declareStandardExchange(const std::string& name, const std::string& type);
};
diff --git a/cpp/src/qpid/broker/System.cpp b/cpp/src/qpid/broker/System.cpp
new file mode 100644
index 0000000000..87d5185b97
--- /dev/null
+++ b/cpp/src/qpid/broker/System.cpp
@@ -0,0 +1,48 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you 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.
+//
+
+#include "System.h"
+#include "qpid/management/ManagementAgent.h"
+#include <sys/utsname.h>
+
+using namespace qpid::broker;
+using qpid::management::ManagementAgent;
+
+System::System ()
+{
+ ManagementAgent::shared_ptr agent = ManagementAgent::getAgent ();
+
+ if (agent.get () != 0)
+ {
+ mgmtObject = management::System::shared_ptr
+ (new management::System (this, "host"));
+ struct utsname _uname;
+ if (uname (&_uname) == 0)
+ {
+ mgmtObject->set_osName (std::string (_uname.sysname));
+ mgmtObject->set_nodeName (std::string (_uname.nodename));
+ mgmtObject->set_release (std::string (_uname.release));
+ mgmtObject->set_version (std::string (_uname.version));
+ mgmtObject->set_machine (std::string (_uname.machine));
+ }
+
+ agent->addObject (mgmtObject, 3, 0);
+ }
+}
+
diff --git a/cpp/src/qpid/broker/System.h b/cpp/src/qpid/broker/System.h
new file mode 100644
index 0000000000..a1a710f2b2
--- /dev/null
+++ b/cpp/src/qpid/broker/System.h
@@ -0,0 +1,51 @@
+#ifndef _BrokerSystem_
+#define _BrokerSystem_
+
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you 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.
+//
+
+#include "qpid/management/Manageable.h"
+#include "qpid/management/System.h"
+#include <boost/shared_ptr.hpp>
+
+namespace qpid {
+namespace broker {
+
+class System : public management::Manageable
+{
+ private:
+
+ management::System::shared_ptr mgmtObject;
+
+ public:
+
+ typedef boost::shared_ptr<System> shared_ptr;
+
+ System ();
+
+ management::ManagementObject::shared_ptr GetManagementObject (void) const
+ { return mgmtObject; }
+
+ management::Manageable::status_t ManagementMethod (uint32_t, management::Args&)
+ { return management::Manageable::STATUS_OK; }
+};
+
+}}
+
+#endif /*!_BrokerSystem_*/