summaryrefslogtreecommitdiff
path: root/cpp/examples/qmf-agent/example.cpp
diff options
context:
space:
mode:
authorTed Ross <tross@apache.org>2008-07-11 20:14:07 +0000
committerTed Ross <tross@apache.org>2008-07-11 20:14:07 +0000
commit2fd1b08b605d2664394ff5708c3cbaebd1dc21ef (patch)
treed0b5c7cfa8f31a1fc721fb45d7ca77a027875b7d /cpp/examples/qmf-agent/example.cpp
parent13e2db2a3d0d14881da3c088f084385740df0731 (diff)
downloadqpid-python-2fd1b08b605d2664394ff5708c3cbaebd1dc21ef.tar.gz
QPID-1174 Remote Management Agent for management of external components
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@676067 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/examples/qmf-agent/example.cpp')
-rw-r--r--cpp/examples/qmf-agent/example.cpp97
1 files changed, 97 insertions, 0 deletions
diff --git a/cpp/examples/qmf-agent/example.cpp b/cpp/examples/qmf-agent/example.cpp
new file mode 100644
index 0000000000..4113d22cac
--- /dev/null
+++ b/cpp/examples/qmf-agent/example.cpp
@@ -0,0 +1,97 @@
+/*
+ *
+ * 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/ManagementObject.h>
+#include <qpid/agent/ManagementAgent.h>
+#include <qpid/agent/ManagementAgentImpl.h>
+#include "Parent.h"
+#include "PackageQmf_example.h"
+
+#include <unistd.h>
+#include <cstdlib>
+#include <iostream>
+
+#include <sstream>
+
+using namespace qpid::management;
+using namespace std;
+
+//==============================================================
+// CoreClass is the operational class that corresponds to the
+// "Parent" class in the management schema.
+//==============================================================
+class CoreClass : public Manageable
+{
+ string name;
+ Parent* mgmtObject;
+
+public:
+
+ CoreClass(ManagementAgent* agent, string _name);
+ ~CoreClass() {}
+
+ void bumpCounter() { mgmtObject->inc_count(); }
+
+ ManagementObject* GetManagementObject(void) const
+ { return mgmtObject; }
+};
+
+CoreClass::CoreClass(ManagementAgent* agent, string _name) : name(_name)
+{
+ mgmtObject = new Parent(agent, this, name);
+
+ agent->addObject(mgmtObject);
+ mgmtObject->set_state("IDLE");
+}
+
+
+//==============================================================
+// Main program
+//==============================================================
+int main(int argc, char** argv) {
+ const char* host = argc>1 ? argv[1] : "127.0.0.1";
+ int port = argc>2 ? atoi(argv[2]) : 5672;
+
+ // Create the qmf management agent
+ ManagementAgent* agent = new ManagementAgentImpl();
+
+ // Register the Qmf_example schema with the agent
+ PackageQmf_example packageInit(agent);
+
+ // Start the agent. It will attempt to make a connection to the
+ // management broker
+ agent->init (string(host), port);
+
+ // Allocate some core objects
+ CoreClass core1(agent, "Example Core Object #1");
+ CoreClass core2(agent, "Example Core Object #2");
+ CoreClass core3(agent, "Example Core Object #3");
+
+ // Periodically bump a counter in core1 to provide a changing statistical value
+ while (1)
+ {
+ sleep(1);
+ core1.bumpCounter();
+ }
+}
+
+