From b0149eb99d4157a011a1ea57d74164f2cafc9ce9 Mon Sep 17 00:00:00 2001 From: Ted Ross Date: Mon, 8 Dec 2008 14:26:55 +0000 Subject: Management optimization: don't send (empty) statistic updates for object classes that don't have statistics. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@724356 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/qpid/agent/ManagementAgentImpl.cpp | 2 +- cpp/src/qpid/management/ManagementBroker.cpp | 9 +++---- cpp/src/qpid/management/ManagementObject.h | 37 ++++++++++++++-------------- 3 files changed, 23 insertions(+), 25 deletions(-) (limited to 'cpp/src') diff --git a/cpp/src/qpid/agent/ManagementAgentImpl.cpp b/cpp/src/qpid/agent/ManagementAgentImpl.cpp index 08af89a72e..3e8b8ee261 100644 --- a/cpp/src/qpid/agent/ManagementAgentImpl.cpp +++ b/cpp/src/qpid/agent/ManagementAgentImpl.cpp @@ -745,7 +745,7 @@ void ManagementAgentImpl::periodicProcessing() object->writeProperties(msgBuffer); } - if (object->getInstChanged() || object->getForcePublish()) { + if (object->hasInst() && (object->getInstChanged() || object->getForcePublish())) { encodeHeader(msgBuffer, 'i'); object->writeStatistics(msgBuffer); } diff --git a/cpp/src/qpid/management/ManagementBroker.cpp b/cpp/src/qpid/management/ManagementBroker.cpp index 7082859948..cc7a2dc4f3 100644 --- a/cpp/src/qpid/management/ManagementBroker.cpp +++ b/cpp/src/qpid/management/ManagementBroker.cpp @@ -360,15 +360,13 @@ void ManagementBroker::periodicProcessing (void) for (ManagementObjectMap::iterator iter = managementObjects.begin (); iter != managementObjects.end (); - iter++) - { + iter++) { ManagementObject* object = iter->second; if (object->getConfigChanged() || object->getInstChanged()) object->setUpdateTime(); - if (object->getConfigChanged() || object->getForcePublish() || object->isDeleted()) - { + if (object->getConfigChanged() || object->getForcePublish() || object->isDeleted()) { Buffer msgBuffer (msgChars, BUFSIZE); encodeHeader (msgBuffer, 'c'); object->writeProperties(msgBuffer); @@ -379,8 +377,7 @@ void ManagementBroker::periodicProcessing (void) sendBuffer (msgBuffer, contentSize, mExchange, routingKey); } - if (object->getInstChanged() || object->getForcePublish()) - { + if (object->hasInst() && (object->getInstChanged() || object->getForcePublish())) { Buffer msgBuffer (msgChars, BUFSIZE); encodeHeader (msgBuffer, 'i'); object->writeStatistics(msgBuffer); diff --git a/cpp/src/qpid/management/ManagementObject.h b/cpp/src/qpid/management/ManagementObject.h index e5604eb2e4..fbdad347b8 100644 --- a/cpp/src/qpid/management/ManagementObject.h +++ b/cpp/src/qpid/management/ManagementObject.h @@ -129,7 +129,7 @@ class ManagementObject : public ManagementItem bool forcePublish; int getThreadIndex(); - void writeTimestamps (qpid::framing::Buffer& buf); + void writeTimestamps(qpid::framing::Buffer& buf); public: typedef void (*writeSchemaCall_t) (qpid::framing::Buffer&); @@ -141,32 +141,33 @@ class ManagementObject : public ManagementItem coreObject(_core), agent(_agent), forcePublish(false) {} virtual ~ManagementObject() {} - virtual writeSchemaCall_t getWriteSchemaCall (void) = 0; + virtual writeSchemaCall_t getWriteSchemaCall() = 0; virtual void writeProperties(qpid::framing::Buffer& buf) = 0; virtual void writeStatistics(qpid::framing::Buffer& buf, bool skipHeaders = false) = 0; - virtual void doMethod (std::string& methodName, - qpid::framing::Buffer& inBuf, - qpid::framing::Buffer& outBuf) = 0; - virtual void setReference (ObjectId objectId); - - virtual std::string& getClassName (void) const = 0; - virtual std::string& getPackageName (void) const = 0; - virtual uint8_t* getMd5Sum (void) const = 0; - - void setObjectId (ObjectId oid) { objectId = oid; } - ObjectId getObjectId (void) { return objectId; } - inline bool getConfigChanged (void) { return configChanged; } - virtual bool getInstChanged (void) { return instChanged; } + virtual void doMethod(std::string& methodName, + qpid::framing::Buffer& inBuf, + qpid::framing::Buffer& outBuf) = 0; + virtual void setReference(ObjectId objectId); + + virtual std::string& getClassName() const = 0; + virtual std::string& getPackageName() const = 0; + virtual uint8_t* getMd5Sum() const = 0; + + void setObjectId(ObjectId oid) { objectId = oid; } + ObjectId getObjectId() { return objectId; } + inline bool getConfigChanged() { return configChanged; } + virtual bool getInstChanged() { return instChanged; } + virtual bool hasInst() { return true; } inline void setForcePublish(bool f) { forcePublish = f; } inline bool getForcePublish() { return forcePublish; } inline void setUpdateTime() { updateTime = (uint64_t(sys::Duration(sys::now()))); } - inline void resourceDestroy (void) { - destroyTime = uint64_t (qpid::sys::Duration (qpid::sys::now ())); + inline void resourceDestroy() { + destroyTime = uint64_t (qpid::sys::Duration(qpid::sys::now())); deleted = true; } - inline bool isDeleted (void) { return deleted; } + inline bool isDeleted() { return deleted; } inline void setFlags(uint32_t f) { flags = f; } inline uint32_t getFlags() { return flags; } bool isSameClass(ManagementObject& other) { -- cgit v1.2.1