From 3d2a193339f6e6cc78007d02e2ffe89229fba7af Mon Sep 17 00:00:00 2001
From: zhangmeng <775834166@qq.com>
Date: 星期四, 30 十二月 2021 17:07:18 +0800
Subject: [PATCH] add topic \0
---
src/nng_wrap.cpp | 13 ++++++-------
1 files changed, 6 insertions(+), 7 deletions(-)
diff --git a/src/nng_wrap.cpp b/src/nng_wrap.cpp
index 31fad46..bf1fa01 100644
--- a/src/nng_wrap.cpp
+++ b/src/nng_wrap.cpp
@@ -138,7 +138,7 @@
msg = &pub->msg_.front();
if (msg->topic_.empty()) {pub->msg_.pop_front(); continue;}
}
- string sndmsg(msg->topic_ + msg->data_);
+ string sndmsg = (string{msg->topic_}+='\0')+=msg->data_;
int rc = nn_send(pub->socket_, sndmsg.data(), sndmsg.size(), 0);
if (rc == (int)sndmsg.size()){
char* tmp{};
@@ -209,19 +209,18 @@
if (m_len > 0){
string tmp_msg{m, (size_t)m_len};
nn_freemsg(m);
- string topic{}, msg{};
+ auto topic{tmp_msg.c_str()};
+ string msg{};
{
lock_guard<mutex> l{(*sub)()};
for(auto && i : sub->topics_){
- if (tmp_msg.size() < i.size()) continue;
- topic = move(tmp_msg.substr(0, i.size()));
- if (topic == i){
- msg = move(tmp_msg.substr(i.size()));
+ if (i.compare(topic) == 0){
+ msg = move(tmp_msg.substr(i.size()+1));
break;
}
}
}
- printf("======>> subscribe recv topic %s msg length %lu\n", topic.c_str(), msg.length());
+ printf("======>> subscribe recv topic %s msg length %lu\n", topic, msg.length());
if (!msg.empty()){
lock_guard<mutex> l(sub->mtx_msg_);
sub->msg_.emplace_back(topic, move(msg));
--
Gitblit v1.8.0