summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/management/ManagementObject.cpp
diff options
context:
space:
mode:
authorTed Ross <tross@apache.org>2010-05-20 19:52:55 +0000
committerTed Ross <tross@apache.org>2010-05-20 19:52:55 +0000
commit2e056e55cf8c068d3b26a0dab83216d1d6438bb3 (patch)
tree8518580baf0d5703daa5db968f1f376830b6d54b /cpp/src/qpid/management/ManagementObject.cpp
parent449c403f2671c25ea65b11837eaca611d8575957 (diff)
downloadqpid-python-2e056e55cf8c068d3b26a0dab83216d1d6438bb3.tar.gz
Removed the logic in the broker's management agent that detected name collisions.
The new logic will disambiguate colliding names by adding an underscore to the one being inserted. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@946773 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/management/ManagementObject.cpp')
-rw-r--r--cpp/src/qpid/management/ManagementObject.cpp36
1 files changed, 21 insertions, 15 deletions
diff --git a/cpp/src/qpid/management/ManagementObject.cpp b/cpp/src/qpid/management/ManagementObject.cpp
index 209c935947..5cdf9eca59 100644
--- a/cpp/src/qpid/management/ManagementObject.cpp
+++ b/cpp/src/qpid/management/ManagementObject.cpp
@@ -30,6 +30,7 @@
#include <stdlib.h>
+using namespace std;
using namespace qpid;
using namespace qpid::management;
@@ -71,19 +72,19 @@ ObjectId::ObjectId(AgentAttachment* _agent, uint8_t flags, uint16_t seq)
}
-ObjectId::ObjectId(std::istream& in) : agent(0)
+ObjectId::ObjectId(istream& in) : agent(0)
{
- std::string text;
+ string text;
in >> text;
fromString(text);
}
-ObjectId::ObjectId(const std::string& text) : agent(0)
+ObjectId::ObjectId(const string& text) : agent(0)
{
fromString(text);
}
-void ObjectId::fromString(const std::string& text)
+void ObjectId::fromString(const string& text)
{
#define FIELDS 5
#if defined (_WIN32) && !defined (atoll)
@@ -94,7 +95,7 @@ void ObjectId::fromString(const std::string& text)
// V1: <flags>-<sequence>-<broker-bank>-<agent-bank>-<uint64-app-id>
// V2: Not used
- std::string copy(text.c_str());
+ string copy(text.c_str());
char* cText;
char* field[FIELDS];
bool atFieldStart = true;
@@ -124,7 +125,7 @@ void ObjectId::fromString(const std::string& text)
(atoll(field[1]) << 48) +
(atoll(field[2]) << 28);
- agentName = std::string(field[3]);
+ agentName = string(field[3]);
second = atoll(field[4]);
}
@@ -146,7 +147,7 @@ bool ObjectId::equalV1(const ObjectId &other) const
}
// encode as V1-format binary
-void ObjectId::encode(std::string& buffer) const
+void ObjectId::encode(string& buffer) const
{
const uint32_t len = 16;
char _data[len];
@@ -163,7 +164,7 @@ void ObjectId::encode(std::string& buffer) const
}
// decode as V1-format binary
-void ObjectId::decode(const std::string& buffer)
+void ObjectId::decode(const string& buffer)
{
const uint32_t len = 16;
char _data[len];
@@ -174,18 +175,23 @@ void ObjectId::decode(const std::string& buffer)
body.reset();
first = body.getLongLong();
second = body.getLongLong();
- v2Key = boost::lexical_cast<std::string>(second);
+ v2Key = boost::lexical_cast<string>(second);
}
// generate the V2 key from the index fields defined
// in the schema.
void ObjectId::setV2Key(const ManagementObject& object)
{
- std::stringstream oname;
+ stringstream oname;
oname << object.getPackageName() << ":" << object.getClassName() << ":" << object.getKey();
v2Key = oname.str();
}
+void ObjectId::disambiguate()
+{
+ v2Key = v2Key + "_";
+}
+
// encode as V2-format map
void ObjectId::mapEncode(types::Variant::Map& map) const
{
@@ -226,7 +232,7 @@ ObjectId::operator types::Variant::Map() const
namespace qpid {
namespace management {
-std::ostream& operator<<(std::ostream& out, const ObjectId& i)
+ostream& operator<<(ostream& out, const ObjectId& i)
{
uint64_t virtFirst = i.first;
if (i.agent)
@@ -263,7 +269,7 @@ void ManagementObject::resourceDestroy()
int ManagementObject::maxThreads = 1;
int ManagementObject::nextThreadIndex = 0;
-void ManagementObject::writeTimestamps (std::string& buf) const
+void ManagementObject::writeTimestamps (string& buf) const
{
char _data[4000];
qpid::framing::Buffer body(_data, 4000);
@@ -279,16 +285,16 @@ void ManagementObject::writeTimestamps (std::string& buf) const
body.reset();
body.getRawData(buf, len);
- std::string oid;
+ string oid;
objectId.encode(oid);
buf += oid;
}
-void ManagementObject::readTimestamps (const std::string& buf)
+void ManagementObject::readTimestamps (const string& buf)
{
char _data[4000];
qpid::framing::Buffer body(_data, 4000);
- std::string unused;
+ string unused;
uint8_t unusedUuid[16];
body.checkAvailable(buf.length());