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;