You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by tr...@apache.org on 2008/05/19 23:02:16 UTC
svn commit: r657974 - in /incubator/qpid/trunk/qpid/cpp/src/qpid/management:
ManagementBroker.cpp ManagementBroker.h
Author: tross
Date: Mon May 19 14:02:15 2008
New Revision: 657974
URL: http://svn.apache.org/viewvc?rev=657974&view=rev
Log:
QPID-1073
Modified:
incubator/qpid/trunk/qpid/cpp/src/qpid/management/ManagementBroker.cpp
incubator/qpid/trunk/qpid/cpp/src/qpid/management/ManagementBroker.h
Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/management/ManagementBroker.cpp
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/management/ManagementBroker.cpp?rev=657974&r1=657973&r2=657974&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/management/ManagementBroker.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/management/ManagementBroker.cpp Mon May 19 14:02:15 2008
@@ -150,7 +150,7 @@
uint32_t persistId,
uint32_t persistBank)
{
- Mutex::ScopedLock lock (userLock);
+ Mutex::ScopedLock lock (addLock);
uint64_t objectId;
if (persistId == 0)
@@ -167,7 +167,7 @@
objectId = ((uint64_t) persistBank) << 24 | persistId;
object->setObjectId (objectId);
- managementObjects[objectId] = object;
+ newManagementObjects[objectId] = object;
}
ManagementBroker::Periodic::Periodic (ManagementBroker& _broker, uint32_t _seconds)
@@ -242,6 +242,16 @@
exchange->route (deliverable, routingKey, 0);
}
+void ManagementBroker::moveNewObjectsLH()
+{
+ Mutex::ScopedLock lock (addLock);
+ for (ManagementObjectMap::iterator iter = newManagementObjects.begin ();
+ iter != newManagementObjects.end ();
+ iter++)
+ managementObjects[iter->first] = iter->second;
+ newManagementObjects.clear();
+}
+
void ManagementBroker::PeriodicProcessing (void)
{
#define BUFSIZE 65536
@@ -262,6 +272,8 @@
SendBuffer (msgBuffer, contentSize, mExchange, routingKey);
}
+ moveNewObjectsLH();
+
if (clientWasAdded)
{
clientWasAdded = false;
@@ -638,6 +650,8 @@
FieldTable ft;
FieldTable::ValuePtr value;
+ moveNewObjectsLH();
+
ft.decode (inBuffer);
value = ft.get ("_class");
if (value->empty () || !value->convertsTo<string> ())
Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/management/ManagementBroker.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/management/ManagementBroker.h?rev=657974&r1=657973&r2=657974&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/management/ManagementBroker.h (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/management/ManagementBroker.h Mon May 19 14:02:15 2008
@@ -139,11 +139,13 @@
RemoteAgentMap remoteAgents;
PackageMap packages;
ManagementObjectMap managementObjects;
+ ManagementObjectMap newManagementObjects;
static shared_ptr agent;
static bool enabled;
framing::Uuid uuid;
+ sys::Mutex addLock;
sys::Mutex userLock;
broker::Timer timer;
broker::Exchange::shared_ptr mExchange;
@@ -169,6 +171,7 @@
uint32_t length,
broker::Exchange::shared_ptr exchange,
std::string routingKey);
+ void moveNewObjectsLH();
void dispatchMethodLH (broker::Message& msg,
const std::string& routingKey,