From e8796e654cb67314f607a3c1963ae8f0f957c420 Mon Sep 17 00:00:00 2001 From: wlliqipeng Date: Thu, 20 Dec 2018 16:23:42 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix=20bug:=20get=20Message=20info=20fail=20?= =?UTF-8?q?,including=20getTags=E3=80=81getKeys=E3=80=81getTopic=E3=80=81g?= =?UTF-8?q?etBody?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/MQMessage.h | 10 +++++----- src/message/MQMessage.cpp | 14 +++++++------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/include/MQMessage.h b/include/MQMessage.h index 9c14e541b..2d55b6b94 100755 --- a/include/MQMessage.h +++ b/include/MQMessage.h @@ -41,16 +41,16 @@ class ROCKETMQCLIENT_API MQMessage { MQMessage& operator=(const MQMessage& other); void setProperty(const std::string& name, const std::string& value); - std::string getProperty(const std::string& name) const; + const std::string & getProperty(const std::string& name) const; - std::string getTopic() const; + const std::string &getTopic() const; void setTopic(const std::string& topic); void setTopic(const char* body, int len); - std::string getTags() const; + const std::string &getTags() const; void setTags(const std::string& tags); - std::string getKeys() const; + const std::string &getKeys() const; void setKeys(const std::string& keys); void setKeys(const std::vector& keys); @@ -63,7 +63,7 @@ class ROCKETMQCLIENT_API MQMessage { int getFlag() const; void setFlag(int flag); - std::string getBody() const; + const std::string &getBody() const; void setBody(const char* body, int len); void setBody(const std::string& body); diff --git a/src/message/MQMessage.cpp b/src/message/MQMessage.cpp index 5f3812e35..c5a644eee 100755 --- a/src/message/MQMessage.cpp +++ b/src/message/MQMessage.cpp @@ -93,13 +93,13 @@ void MQMessage::setProperty(const string& name, const string& value) { m_properties[name] = value; } -string MQMessage::getProperty(const string& name) const { +const string & MQMessage::getProperty(const string& name) const { map::const_iterator it = m_properties.find(name); - - return (it == m_properties.end()) ? "" : (*it).second; + const string &property = it->second; + return property; } -string MQMessage::getTopic() const { return m_topic; } +const string& MQMessage::getTopic() const { return m_topic; } void MQMessage::setTopic(const string& topic) { m_topic = topic; } @@ -108,13 +108,13 @@ void MQMessage::setTopic(const char* body, int len) { m_topic.append(body, len); } -string MQMessage::getTags() const { return getProperty(PROPERTY_TAGS); } +const string& MQMessage::getTags() const { return getProperty(PROPERTY_TAGS); } void MQMessage::setTags(const string& tags) { setProperty(PROPERTY_TAGS, tags); } -string MQMessage::getKeys() const { return getProperty(PROPERTY_KEYS); } +const string& MQMessage::getKeys() const { return getProperty(PROPERTY_KEYS); } void MQMessage::setKeys(const string& keys) { setProperty(PROPERTY_KEYS, keys); @@ -174,7 +174,7 @@ int MQMessage::getFlag() const { return m_flag; } void MQMessage::setFlag(int flag) { m_flag = flag; } -string MQMessage::getBody() const { return m_body; } +const string& MQMessage::getBody() const { return m_body; } void MQMessage::setBody(const char* body, int len) { m_body.clear(); From 5ce84d2495d4ef53824e3d73bf6b2ea7c41ea6da Mon Sep 17 00:00:00 2001 From: wlliqipeng Date: Tue, 25 Dec 2018 18:43:18 +0800 Subject: [PATCH 2/2] Fix a temporary pointer bug from getProperty --- include/MQMessage.h | 2 +- src/message/MQMessage.cpp | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/include/MQMessage.h b/include/MQMessage.h index 2d55b6b94..cc65fd121 100755 --- a/include/MQMessage.h +++ b/include/MQMessage.h @@ -40,7 +40,7 @@ class ROCKETMQCLIENT_API MQMessage { MQMessage(const MQMessage& other); MQMessage& operator=(const MQMessage& other); - void setProperty(const std::string& name, const std::string& value); + void setProperty(const std::string& name, const std::string& value) ; const std::string & getProperty(const std::string& name) const; const std::string &getTopic() const; diff --git a/src/message/MQMessage.cpp b/src/message/MQMessage.cpp index c5a644eee..c8bae4b53 100755 --- a/src/message/MQMessage.cpp +++ b/src/message/MQMessage.cpp @@ -95,8 +95,11 @@ void MQMessage::setProperty(const string& name, const string& value) { const string & MQMessage::getProperty(const string& name) const { map::const_iterator it = m_properties.find(name); - const string &property = it->second; - return property; + if(it == m_properties.end()){ + return ""; + }else{ + return it->second; + } } const string& MQMessage::getTopic() const { return m_topic; }