summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/management
diff options
context:
space:
mode:
authorTed Ross <tross@apache.org>2008-10-15 15:51:15 +0000
committerTed Ross <tross@apache.org>2008-10-15 15:51:15 +0000
commitd5913038788795bd964c534bd28983e5732c2fce (patch)
treeb86ab7ab84ec2f25421c161e76ef2924043ca30a /cpp/src/qpid/management
parente173cf8c8bd0af424a2d087f02dfa83fcbf7029d (diff)
downloadqpid-python-d5913038788795bd964c534bd28983e5732c2fce.tar.gz
QPID-1360 - Scaling improvements for QMF
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@704944 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/management')
-rw-r--r--cpp/src/qpid/management/ManagementBroker.cpp32
-rw-r--r--cpp/src/qpid/management/ManagementObject.h10
2 files changed, 27 insertions, 15 deletions
diff --git a/cpp/src/qpid/management/ManagementBroker.cpp b/cpp/src/qpid/management/ManagementBroker.cpp
index 4a9882d827..7ced42f69b 100644
--- a/cpp/src/qpid/management/ManagementBroker.cpp
+++ b/cpp/src/qpid/management/ManagementBroker.cpp
@@ -291,26 +291,26 @@ bool ManagementBroker::checkHeader (Buffer& buf, uint8_t *opcode, uint32_t *seq)
return h1 == 'A' && h2 == 'M' && h3 == '2';
}
-void ManagementBroker::sendBuffer (Buffer& buf,
- uint32_t length,
- qpid::broker::Exchange::shared_ptr exchange,
- string routingKey)
+void ManagementBroker::sendBuffer(Buffer& buf,
+ uint32_t length,
+ qpid::broker::Exchange::shared_ptr exchange,
+ string routingKey)
{
if (exchange.get() == 0)
return;
- intrusive_ptr<Message> msg (new Message ());
- AMQFrame method (in_place<MessageTransferBody>(
+ intrusive_ptr<Message> msg(new Message());
+ AMQFrame method(in_place<MessageTransferBody>(
ProtocolVersion(), exchange->getName (), 0, 0));
- AMQFrame header (in_place<AMQHeaderBody>());
+ AMQFrame header(in_place<AMQHeaderBody>());
AMQFrame content(in_place<AMQContentBody>());
content.castBody<AMQContentBody>()->decode(buf, length);
- method.setEof (false);
- header.setBof (false);
- header.setEof (false);
- content.setBof (false);
+ method.setEof(false);
+ header.setBof(false);
+ header.setEof(false);
+ content.setBof(false);
msg->getFrames().append(method);
msg->getFrames().append(header);
@@ -321,7 +321,9 @@ void ManagementBroker::sendBuffer (Buffer& buf,
msg->getFrames().append(content);
DeliverableMessage deliverable (msg);
- exchange->route (deliverable, routingKey, 0);
+ try {
+ exchange->route(deliverable, routingKey, 0);
+ } catch(std::exception&) {}
}
void ManagementBroker::moveNewObjectsLH()
@@ -385,7 +387,7 @@ void ManagementBroker::periodicProcessing (void)
contentSize = BUFSIZE - msgBuffer.available ();
msgBuffer.reset ();
- routingKey = "console.prop." + object->getPackageName() + "." + object->getClassName ();
+ routingKey = "console.obj." + object->getPackageName() + "." + object->getClassName ();
sendBuffer (msgBuffer, contentSize, mExchange, routingKey);
}
@@ -397,7 +399,7 @@ void ManagementBroker::periodicProcessing (void)
contentSize = BUFSIZE - msgBuffer.available ();
msgBuffer.reset ();
- routingKey = "console.stat." + object->getPackageName() + "." + object->getClassName ();
+ routingKey = "console.obj." + object->getPackageName() + "." + object->getClassName ();
sendBuffer (msgBuffer, contentSize, mExchange, routingKey);
}
@@ -1018,7 +1020,7 @@ void ManagementBroker::addClassLH(uint8_t kind,
return;
// No such class found, create a new class with local information.
- QPID_LOG (debug, "ManagementBroker added class " << pIter->first << "." <<
+ QPID_LOG (debug, "ManagementBroker added class " << pIter->first << ":" <<
key.name);
cMap.insert(pair<SchemaClassKey, SchemaClass>(key, SchemaClass(kind, schemaCall)));
diff --git a/cpp/src/qpid/management/ManagementObject.h b/cpp/src/qpid/management/ManagementObject.h
index fa2025112f..a34f50ab8f 100644
--- a/cpp/src/qpid/management/ManagementObject.h
+++ b/cpp/src/qpid/management/ManagementObject.h
@@ -122,6 +122,7 @@ class ManagementObject : public ManagementItem
sys::Mutex accessLock;
ManagementAgent* agent;
int maxThreads;
+ uint32_t flags;
static int nextThreadIndex;
@@ -164,6 +165,15 @@ class ManagementObject : public ManagementItem
deleted = true;
}
inline bool isDeleted (void) { return deleted; }
+ inline void setFlags(uint32_t f) { flags = f; }
+ inline uint32_t getFlags() { return flags; }
+ bool isSameClass(ManagementObject& other) {
+ for (int idx = 0; idx < 16; idx++)
+ if (other.getMd5Sum()[idx] != getMd5Sum()[idx])
+ return false;
+ return other.getClassName() == getClassName() &&
+ other.getPackageName() == getPackageName();
+ }
};
typedef std::map<ObjectId, ManagementObject*> ManagementObjectMap;