You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by if...@apache.org on 2022/07/12 21:52:17 UTC

[rocketmq-client-cpp] branch master updated: refactor: reduce unnecessary memory malloc (#432)

This is an automated email from the ASF dual-hosted git repository.

ifplusor pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/rocketmq-client-cpp.git


The following commit(s) were added to refs/heads/master by this push:
     new dbef35d  refactor: reduce unnecessary memory malloc (#432)
dbef35d is described below

commit dbef35dbe9fbedc13b8a666fe338f57ff7e3263a
Author: xiaojin <zt...@163.com>
AuthorDate: Wed Jul 13 05:52:12 2022 +0800

    refactor: reduce unnecessary memory malloc (#432)
---
 src/MQClientAPIImpl.cpp                |  5 ++---
 src/MQClientAPIImpl.h                  |  2 +-
 src/producer/DefaultMQProducerImpl.cpp | 24 ++++++++++++------------
 src/protocol/CommandHeader.h           |  2 +-
 4 files changed, 16 insertions(+), 17 deletions(-)

diff --git a/src/MQClientAPIImpl.cpp b/src/MQClientAPIImpl.cpp
index 47494fa..19cf3f5 100644
--- a/src/MQClientAPIImpl.cpp
+++ b/src/MQClientAPIImpl.cpp
@@ -229,7 +229,7 @@ void MQClientAPIImpl::endTransactionOneway(std::string addr,
 SendResult MQClientAPIImpl::sendMessage(const string& addr,
                                         const string& brokerName,
                                         const MQMessage& msg,
-                                        SendMessageRequestHeader* pRequestHeader,
+                                        const SendMessageRequestHeader& requestHeader,
                                         int timeoutMillis,
                                         int maxRetrySendTimes,
                                         int communicationMode,
@@ -237,9 +237,8 @@ SendResult MQClientAPIImpl::sendMessage(const string& addr,
                                         const SessionCredentials& sessionCredentials) {
   // RemotingCommand request(SEND_MESSAGE, pRequestHeader);
   // Using MQ V2 Protocol to end messages.
-  SendMessageRequestHeaderV2* pRequestHeaderV2 = new SendMessageRequestHeaderV2(*pRequestHeader);
+  SendMessageRequestHeaderV2* pRequestHeaderV2 = new SendMessageRequestHeaderV2(requestHeader);
   RemotingCommand request(SEND_MESSAGE_V2, pRequestHeaderV2);
-  delete pRequestHeader;  // delete to avoid memory leak.
   string body = msg.getBody();
   request.SetBody(body.c_str(), body.length());
   request.setMsgBody(body);
diff --git a/src/MQClientAPIImpl.h b/src/MQClientAPIImpl.h
index b8bd883..bf8c892 100644
--- a/src/MQClientAPIImpl.h
+++ b/src/MQClientAPIImpl.h
@@ -72,7 +72,7 @@ class MQClientAPIImpl {
   virtual SendResult sendMessage(const string& addr,
                                  const string& brokerName,
                                  const MQMessage& msg,
-                                 SendMessageRequestHeader* pRequestHeader,
+                                 const SendMessageRequestHeader& requestHeader,
                                  int timeoutMillis,
                                  int maxRetrySendTimes,
                                  int communicationMode,
diff --git a/src/producer/DefaultMQProducerImpl.cpp b/src/producer/DefaultMQProducerImpl.cpp
index 87d44f4..0e7c784 100644
--- a/src/producer/DefaultMQProducerImpl.cpp
+++ b/src/producer/DefaultMQProducerImpl.cpp
@@ -481,18 +481,18 @@ SendResult DefaultMQProducerImpl::sendKernelImpl(MQMessage& msg,
         }
         executeSendMessageHookBefore(pSendMesgContext.get());
       }
-      SendMessageRequestHeader* requestHeader = new SendMessageRequestHeader();
-      requestHeader->producerGroup = getGroupName();
-      requestHeader->topic = (msg.getTopic());
-      requestHeader->defaultTopic = DEFAULT_TOPIC;
-      requestHeader->defaultTopicQueueNums = 4;
-      requestHeader->queueId = (mq.getQueueId());
-      requestHeader->sysFlag = (msg.getSysFlag());
-      requestHeader->bornTimestamp = UtilAll::currentTimeMillis();
-      requestHeader->flag = (msg.getFlag());
-      requestHeader->consumeRetryTimes = 16;
-      requestHeader->batch = isBatchMsg;
-      requestHeader->properties = (MQDecoder::messageProperties2String(msg.getProperties()));
+      SendMessageRequestHeader requestHeader;
+      requestHeader.producerGroup = getGroupName();
+      requestHeader.topic = (msg.getTopic());
+      requestHeader.defaultTopic = DEFAULT_TOPIC;
+      requestHeader.defaultTopicQueueNums = 4;
+      requestHeader.queueId = (mq.getQueueId());
+      requestHeader.sysFlag = (msg.getSysFlag());
+      requestHeader.bornTimestamp = UtilAll::currentTimeMillis();
+      requestHeader.flag = (msg.getFlag());
+      requestHeader.consumeRetryTimes = 16;
+      requestHeader.batch = isBatchMsg;
+      requestHeader.properties = (MQDecoder::messageProperties2String(msg.getProperties()));
 
       SendResult sendResult = getFactory()->getMQClientAPIImpl()->sendMessage(
           brokerAddr, mq.getBrokerName(), msg, requestHeader, getSendMsgTimeout(), getRetryTimes4Async(),
diff --git a/src/protocol/CommandHeader.h b/src/protocol/CommandHeader.h
index 7ebf54b..9ce4400 100644
--- a/src/protocol/CommandHeader.h
+++ b/src/protocol/CommandHeader.h
@@ -175,7 +175,7 @@ class SendMessageRequestHeader : public CommandHeader {
 //<!************************************************************************
 class SendMessageRequestHeaderV2 : public CommandHeader {
  public:
-  SendMessageRequestHeaderV2(SendMessageRequestHeader v1) {
+  explicit SendMessageRequestHeaderV2(const SendMessageRequestHeader& v1) {
     a = v1.producerGroup;
     b = v1.topic;
     c = v1.defaultTopic;