79 lines
2.8 KiB
Diff
79 lines
2.8 KiB
Diff
From ce029db530429609847b38ae7bae2428064e3a27 Mon Sep 17 00:00:00 2001
|
|
From: hurricane618 <hurricane618@hotmail.com>
|
|
Date: Mon, 4 Dec 2023 10:06:55 +0800
|
|
Subject: [PATCH 5/6] add nullptr check in Subscribe
|
|
|
|
fix leak of nullptr problem
|
|
|
|
Signed-off-by: hurricane618 <hurricane618@hotmail.com>
|
|
---
|
|
observer_agent/grpc_comm/client.cpp | 10 ++++++++--
|
|
observer_agent/grpc_comm/server.cpp | 15 ++++++++-------
|
|
2 files changed, 16 insertions(+), 9 deletions(-)
|
|
|
|
diff --git a/observer_agent/grpc_comm/client.cpp b/observer_agent/grpc_comm/client.cpp
|
|
index ecb54ae..84b5c96 100644
|
|
--- a/observer_agent/grpc_comm/client.cpp
|
|
+++ b/observer_agent/grpc_comm/client.cpp
|
|
@@ -43,16 +43,22 @@ std::unique_ptr<ClientReader<Message>> PubSubClient::Subscribe(const int topic)
|
|
SubscribeRequest request;
|
|
request.set_topic(topic);
|
|
request.set_sub_name(uuid_str);
|
|
+ std::string ret_info;
|
|
|
|
Message msg;
|
|
SubFlag = true;
|
|
std::unique_ptr<ClientReader<Message>> reader = stub_->Subscribe(&context, request);
|
|
- if (reader == nullptr)
|
|
+ ret_info = ReadFrom(reader);
|
|
+
|
|
+ if (ret_info.substr(0, 6) == "topic:")
|
|
+ {
|
|
+ std::cout << "Success subscribe." << std::endl;
|
|
+ return reader;
|
|
+ } else
|
|
{
|
|
std::cerr << "Failed to subscribe." << std::endl;
|
|
return nullptr;
|
|
}
|
|
- return reader;
|
|
}
|
|
|
|
void PubSubClient::Publish(const int topic, const std::string &content)
|
|
diff --git a/observer_agent/grpc_comm/server.cpp b/observer_agent/grpc_comm/server.cpp
|
|
index 54ae66f..d53866f 100644
|
|
--- a/observer_agent/grpc_comm/server.cpp
|
|
+++ b/observer_agent/grpc_comm/server.cpp
|
|
@@ -86,6 +86,14 @@ class PubSubServiceImpl final : public SubManager::Service
|
|
return grpc::Status(grpc::StatusCode::INTERNAL, "multi-process max connection number, Failed to Subscribe the topic");
|
|
}
|
|
|
|
+ msg.set_text("topic: " + std::to_string(cli_topic) + " Subscribe success!");
|
|
+ if (!writer->Write(msg))
|
|
+ {
|
|
+ std::cerr << "Failed to write the initial message" << std::endl;
|
|
+ sub_mutex.unlock();
|
|
+ return grpc::Status(grpc::StatusCode::INTERNAL, "Failed to write the message");
|
|
+ }
|
|
+
|
|
suber_topic_[cli_name].push_back(cli_topic);
|
|
suber_writer_[cli_name].push_back(writer);
|
|
suber_connection_[cli_name].push_back(tmp_index);
|
|
@@ -94,13 +102,6 @@ class PubSubServiceImpl final : public SubManager::Service
|
|
|
|
sub_mutex.unlock();
|
|
|
|
- msg.set_text("topic: " + std::to_string(cli_topic) + " Subscribe success!");
|
|
- if (!writer->Write(msg))
|
|
- {
|
|
- std::cerr << "Failed to write the initial message" << std::endl;
|
|
- return grpc::Status(grpc::StatusCode::INTERNAL, "Failed to write the message");
|
|
- }
|
|
-
|
|
keepalive_msg.set_text("keepalive");
|
|
while (connect_status[tmp_index])
|
|
{
|
|
--
|
|
2.33.0
|
|
|