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/04 04:59:10 UTC

[rocketmq-client-cpp] 01/02: set read water mark to msgLen + 4,wait for receiving whole data

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

commit 969572f8344b7da1a641a4cf6e76c8cd5e834a8c
Author: SRC-xiaojin <zt...@163.com>
AuthorDate: Fri Jul 1 20:33:25 2022 +0800

    set read water mark to msgLen + 4,wait for receiving whole data
    
    (cherry picked from commit e03806d73c22b0402540542bf368169ccaf38d23)
---
 src/transport/TcpTransport.cpp | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/transport/TcpTransport.cpp b/src/transport/TcpTransport.cpp
index de3ca8c..10b7673 100644
--- a/src/transport/TcpTransport.cpp
+++ b/src/transport/TcpTransport.cpp
@@ -266,6 +266,10 @@ void TcpTransport::readNextMessageIntCallback(BufferEvent* event, TcpTransport*
       LOG_DEBUG("had received all data. msgLen:%d, from:%d, recvLen:%d", msgLen, event->getfd(), recvLen);
     } else {
       LOG_DEBUG("didn't received whole. msgLen:%d, from:%d, recvLen:%d", msgLen, event->getfd(), recvLen);
+      /**
+       * set read water mark to msgLen + 4,wait for receiving whole data
+       */
+      event->setWatermark(EV_READ, msgLen + 4, 0);
       return;  // consider large data which was not received completely by now
     }
 
@@ -277,6 +281,10 @@ void TcpTransport::readNextMessageIntCallback(BufferEvent* event, TcpTransport*
 
       transport->messageReceived(msg, event->getPeerAddrPort());
     }
+    /**
+     * reset read water mark to 4
+     */
+    event->setWatermark(EV_READ, 4, 0);
   }
 }