You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kg...@apache.org on 2010/03/26 22:03:31 UTC

svn commit: r928059 - in /qpid/branches/qmf-devel0.7a/qpid/cpp: include/qpid/management/ManagementObject.h src/qpid/management/ManagementAgent.cpp src/qpid/management/ManagementObject.cpp src/tests/ManagementTest.cpp

Author: kgiusti
Date: Fri Mar 26 21:03:31 2010
New Revision: 928059

URL: http://svn.apache.org/viewvc?rev=928059&view=rev
Log:
qmf v1 tests pass

Modified:
    qpid/branches/qmf-devel0.7a/qpid/cpp/include/qpid/management/ManagementObject.h
    qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/management/ManagementAgent.cpp
    qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/management/ManagementObject.cpp
    qpid/branches/qmf-devel0.7a/qpid/cpp/src/tests/ManagementTest.cpp

Modified: qpid/branches/qmf-devel0.7a/qpid/cpp/include/qpid/management/ManagementObject.h
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7a/qpid/cpp/include/qpid/management/ManagementObject.h?rev=928059&r1=928058&r2=928059&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7a/qpid/cpp/include/qpid/management/ManagementObject.h (original)
+++ qpid/branches/qmf-devel0.7a/qpid/cpp/include/qpid/management/ManagementObject.h Fri Mar 26 21:03:31 2010
@@ -53,18 +53,21 @@ class ObjectId {
 protected:
     const AgentAttachment* agent;
     uint64_t first;
+    uint64_t second;
     uint64_t agentEpoch;
     std::string v2Key;
     std::string agentName;
     void fromString(const std::string&);
 public:
-    QPID_COMMON_EXTERN ObjectId() : agent(0), first(0) {}
+    QPID_COMMON_EXTERN ObjectId() : agent(0), first(0), second(0), agentEpoch(0) {}
     QPID_COMMON_EXTERN ObjectId(const messaging::Variant& map) :
-    agent(0), first(0), agentEpoch(0) { mapDecode(map.asMap()); }
+    agent(0), first(0), second(0), agentEpoch(0) { mapDecode(map.asMap()); }
     QPID_COMMON_EXTERN ObjectId(uint8_t flags, uint16_t seq, uint32_t broker);
     QPID_COMMON_EXTERN ObjectId(AgentAttachment* _agent, uint8_t flags, uint16_t seq);
     QPID_COMMON_EXTERN ObjectId(std::istream&);
     QPID_COMMON_EXTERN ObjectId(const std::string&);
+    // Deprecated:
+    QPID_COMMON_EXTERN ObjectId(uint8_t flags, uint16_t seq, uint32_t broker, uint64_t object);
     QPID_COMMON_EXTERN bool operator==(const ObjectId &other) const;
     QPID_COMMON_EXTERN bool operator<(const ObjectId &other) const;
     QPID_COMMON_EXTERN void mapEncode(messaging::VariantMap& map) const;

Modified: qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/management/ManagementAgent.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/management/ManagementAgent.cpp?rev=928059&r1=928058&r2=928059&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/management/ManagementAgent.cpp (original)
+++ qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/management/ManagementAgent.cpp Fri Mar 26 21:03:31 2010
@@ -221,11 +221,42 @@ void ManagementAgent::registerEvent (con
     addClassLH(ManagementItem::CLASS_KIND_EVENT, pIter, eventName, md5Sum, schemaCall);
 }
 
-// Deprecated:
+// Deprecated:  V1 objects
 ObjectId ManagementAgent::addObject(ManagementObject* object, uint64_t persistId)
 {
-    // always force object to generate key string
-    return addObject(object, std::string(), persistId != 0);
+    uint16_t sequence;
+    uint64_t objectNum;
+
+    if (persistId == 0) {
+        sequence  = bootSequence;
+        objectNum = nextObjectId++;
+    } else {
+        sequence  = 0;
+        objectNum = persistId;
+    }
+
+    ObjectId objId(0 /*flags*/, sequence, brokerBank, objectNum);
+    objId.setV2Key(*object);   // let object generate the v2 key
+
+    object->setObjectId(objId);
+
+    {
+        Mutex::ScopedLock lock (addLock);
+        ManagementObjectMap::iterator destIter = newManagementObjects.find(objId);
+        if (destIter != newManagementObjects.end()) {
+            if (destIter->second->isDeleted()) {
+                newDeletedManagementObjects.push_back(destIter->second);
+                newManagementObjects.erase(destIter);
+            } else {
+                QPID_LOG(error, "ObjectId collision in addObject. class=" << object->getClassName() <<
+                         " key=" << objId.getV2Key());
+                return objId;
+            }
+        }
+        newManagementObjects[objId] = object;
+    }
+
+    return objId;
 }
 
 

Modified: qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/management/ManagementObject.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/management/ManagementObject.cpp?rev=928059&r1=928058&r2=928059&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/management/ManagementObject.cpp (original)
+++ qpid/branches/qmf-devel0.7a/qpid/cpp/src/qpid/management/ManagementObject.cpp Fri Mar 26 21:03:31 2010
@@ -39,22 +39,20 @@ void AgentAttachment::setBanks(uint32_t 
         ((uint64_t) (bank   & 0x0fffffff));
 }
 
-#if 0
 // Deprecated
-ObjectId::ObjectId(uint8_t flags, uint16_t seq, uint32_t broker, uint32_t bank, uint64_t object)
-    : agent(0)
+ObjectId::ObjectId(uint8_t flags, uint16_t seq, uint32_t broker, uint64_t object)
+    : agent(0), agentEpoch(seq)
 {
     first =
         ((uint64_t) (flags  &       0x0f)) << 60 |
         ((uint64_t) (seq    &     0x0fff)) << 48 |
-        ((uint64_t) (broker & 0x000fffff)) << 28 |
-        ((uint64_t) (bank   & 0x0fffffff));
+      ((uint64_t) (broker & 0x000fffff)) << 28;
     second = object;
 }
-#endif
+
 
 ObjectId::ObjectId(uint8_t flags, uint16_t seq, uint32_t broker)
-    : agent(0), agentEpoch(seq)
+    : agent(0), second(0), agentEpoch(seq)
 {
     first =
         ((uint64_t) (flags  &       0x0f)) << 60 |
@@ -63,7 +61,7 @@ ObjectId::ObjectId(uint8_t flags, uint16
 }
 
 ObjectId::ObjectId(AgentAttachment* _agent, uint8_t flags, uint16_t seq)
-    : agent(_agent), agentEpoch(seq)
+    : agent(_agent), second(0), agentEpoch(seq)
 {
 
     first =
@@ -93,7 +91,7 @@ void ObjectId::fromString(const std::str
 
     // format:
     // V1: <flags>-<sequence>-<broker-bank>-<agent-bank>-<uint64-app-id>
-    // V2: <flags>-<epoch>-<1>-<agent-name>-<str-app-id>
+    // V2: Not used
 
     std::string copy(text.c_str());
     char* cText;
@@ -126,7 +124,7 @@ void ObjectId::fromString(const std::str
         (atoll(field[2]) << 28);
 
     agentName = std::string(field[3]);
-    v2Key = std::string(field[4]);
+    second = atoll(field[4]);
 }
 
 
@@ -143,13 +141,12 @@ bool ObjectId::operator<(const ObjectId 
 bool ObjectId::equalV1(const ObjectId &other) const
 {
     uint64_t otherFirst = agent == 0 ? other.first : other.first & 0xffff000000000000LL;
-    return first == otherFirst && v2Key == other.v2Key;
+    return first == otherFirst && second == other.second;
 }
 
 // encode as V1-format binary
 void ObjectId::encode(std::string& buffer) const
 {
-    uint64_t second;
     const uint32_t len = 16;
     char _data[len];
     qpid::framing::Buffer body(_data, len);
@@ -158,14 +155,6 @@ void ObjectId::encode(std::string& buffe
         body.putLongLong(first);
     else
         body.putLongLong(first | agent->first);
-
-    try {
-        second = boost::lexical_cast<uint64_t>(v2Key);
-    } catch(const boost::bad_lexical_cast&) {
-        second = 0;
-        QPID_LOG(error, "Badly formatted QMF Object Id v2Key:" << v2Key);
-    }
-
     body.putLongLong(second);
 
     body.reset();
@@ -175,7 +164,6 @@ void ObjectId::encode(std::string& buffe
 // decode as V1-format binary
 void ObjectId::decode(const std::string& buffer)
 {
-    uint64_t second;
     const uint32_t len = 16;
     char _data[len];
     qpid::framing::Buffer body(_data, len);
@@ -252,7 +240,7 @@ std::ostream& operator<<(std::ostream& o
         "-" << ((virtFirst & 0x0FFF000000000000LL) >> 48) <<
         "-" << ((virtFirst & 0x0000FFFFF0000000LL) >> 28) <<
         "-" << i.agentName <<
-        "-" << i.v2Key;
+        "-" << i.second;
     return out;
 }
 

Modified: qpid/branches/qmf-devel0.7a/qpid/cpp/src/tests/ManagementTest.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7a/qpid/cpp/src/tests/ManagementTest.cpp?rev=928059&r1=928058&r2=928059&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7a/qpid/cpp/src/tests/ManagementTest.cpp (original)
+++ qpid/branches/qmf-devel0.7a/qpid/cpp/src/tests/ManagementTest.cpp Fri Mar 26 21:03:31 2010
@@ -58,14 +58,14 @@ QPID_AUTO_TEST_CASE(testObjectIdSerializ
 QPID_AUTO_TEST_CASE(testObjectIdEncode) {
     qpid::messaging::Variant::Map oidMap;
 
-    ObjectId oid(1, 2, 3);
+    ObjectId oid(1, 2, 3, 9999);
     oid.setV2Key("testkey");
     oid.setAgentName("myAgent");
 
     std::stringstream out1;
     out1 << oid;
 
-    BOOST_CHECK_EQUAL(out1.str(), "1-2-3-myAgent-testkey");
+    BOOST_CHECK_EQUAL(out1.str(), "1-2-3-myAgent-9999");
 }
 
 QPID_AUTO_TEST_CASE(testObjectIdAttach) {
@@ -77,13 +77,13 @@ QPID_AUTO_TEST_CASE(testObjectIdAttach) 
     std::stringstream out1;
     out1 << oid;
 
-    BOOST_CHECK_EQUAL(out1.str(), "10-20-0-MrSmith-GabbaGabbaHey");
+    BOOST_CHECK_EQUAL(out1.str(), "10-20-0-MrSmith-0");
 
     agent.setBanks(30, 40);
     std::stringstream out2;
     out2 << oid;
 
-    BOOST_CHECK_EQUAL(out2.str(), "10-20-30-MrSmith-GabbaGabbaHey");
+    BOOST_CHECK_EQUAL(out2.str(), "10-20-30-MrSmith-0");
 }
 
 QPID_AUTO_TEST_CASE(testConsoleObjectId) {



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org