diff --git a/observer_agent/grpc_comm/Makefile b/observer_agent/grpc_comm/Makefile index 6b882bcecdbf56ebf6a73a8f7de392e0a30c97ac..be426f93c7c5cfdf37d1005fa8fa4e5ce7d66eab 100644 --- a/observer_agent/grpc_comm/Makefile +++ b/observer_agent/grpc_comm/Makefile @@ -28,7 +28,7 @@ else LDFLAGS += -L/usr/local/lib `pkg-config --libs protobuf grpc++`\ -pthread\ -Wl,--no-as-needed -lgrpc++_reflection -Wl,--as-needed\ - -ldl + -ldl -luuid endif PROTOC = protoc GRPC_CPP_PLUGIN = grpc_cpp_plugin diff --git a/observer_agent/grpc_comm/client.cpp b/observer_agent/grpc_comm/client.cpp index 4ff5c297e4774bf1e8d903569b40b00846376710..2d7abc0d25eabb13f0a5f96a6d2e464c3896afdf 100644 --- a/observer_agent/grpc_comm/client.cpp +++ b/observer_agent/grpc_comm/client.cpp @@ -14,6 +14,7 @@ * Description: secDetector grpc client */ #include +#include #include "comm_api.grpc.pb.h" #include "grpc_api.h" @@ -29,12 +30,18 @@ using data_comm::PublishRequest; #define BUF_NUM 1024 PubSubClient::PubSubClient(std::shared_ptr channel) - : stub_(SubManager::NewStub(channel)) {} + : stub_(SubManager::NewStub(channel)) { + uuid_t uuid; + char uuid_temp[37]; + uuid_generate(uuid); + uuid_unparse(uuid, uuid_temp); + uuid_str = std::string(uuid_temp); + } -std::unique_ptr> PubSubClient::Subscribe(const int topic, const std::string& name) { +std::unique_ptr> PubSubClient::Subscribe(const int topic) { SubscribeRequest request; request.set_topic(topic); - request.set_sub_name(name); + request.set_sub_name(uuid_str); Message msg; SubFlag = true; @@ -58,10 +65,10 @@ void PubSubClient::Publish(const int topic, const std::string& content) { } } -void PubSubClient::UnSubscribe(const int topic, const std::string& name) { +void PubSubClient::UnSubscribe(const int topic) { UnSubscribeRequest request; request.set_topic(topic); - request.set_sub_name(name); + request.set_sub_name(uuid_str); ClientContext unsub_context; Message msg; diff --git a/observer_agent/grpc_comm/client_pub_demo.cpp b/observer_agent/grpc_comm/client_pub_demo.cpp index 273dce3921ca143d610267c61adbbb417fc5880c..c3f8fd31ed40ff9bdf12a0b0d3ae985391147def 100644 --- a/observer_agent/grpc_comm/client_pub_demo.cpp +++ b/observer_agent/grpc_comm/client_pub_demo.cpp @@ -14,6 +14,7 @@ * Description: secDetector grpc client publish demo */ #include +#include #include "comm_api.grpc.pb.h" using grpc::Channel; @@ -30,12 +31,18 @@ using data_comm::PublishRequest; class PubSubClient { public: PubSubClient(std::shared_ptr channel) - : stub_(SubManager::NewStub(channel)) {} + : stub_(SubManager::NewStub(channel)) { + uuid_t uuid; + char uuid_temp[37]; + uuid_generate(uuid); + uuid_unparse(uuid, uuid_temp); + uuid_str = std::string(uuid_temp); + } - std::unique_ptr> Subscribe(const int topic, const std::string& name) { + std::unique_ptr> Subscribe(const int topic) { SubscribeRequest request; request.set_topic(topic); - request.set_sub_name(name); + request.set_sub_name(uuid_str); Message msg; SubFlag = true; @@ -59,10 +66,10 @@ class PubSubClient { } } - void UnSubscribe(const int topic, const std::string& name) { + void UnSubscribe(const int topic) { UnSubscribeRequest request; request.set_topic(topic); - request.set_sub_name(name); + request.set_sub_name(uuid_str); ClientContext unsub_context; Message msg; @@ -91,6 +98,7 @@ class PubSubClient { std::unique_ptr stub_; bool SubFlag; ClientContext context; + std::string uuid_str; }; int main(int argc, char** argv) { diff --git a/observer_agent/grpc_comm/client_sub_demo.cpp b/observer_agent/grpc_comm/client_sub_demo.cpp index a54eec2871f6d4757341a1ca0ac8103ffb020000..59a329cef665e32584347ba4b5e3d93d2d545b0c 100644 --- a/observer_agent/grpc_comm/client_sub_demo.cpp +++ b/observer_agent/grpc_comm/client_sub_demo.cpp @@ -14,6 +14,7 @@ * Description: secDetector grpc client subscribe demo */ #include +#include #include "comm_api.grpc.pb.h" using grpc::Channel; @@ -30,12 +31,18 @@ using data_comm::PublishRequest; class PubSubClient { public: PubSubClient(std::shared_ptr channel) - : stub_(SubManager::NewStub(channel)) {} - - std::unique_ptr> Subscribe(const int topic, const std::string& name) { + : stub_(SubManager::NewStub(channel)) { + uuid_t uuid; + char uuid_temp[37]; + uuid_generate(uuid); + uuid_unparse(uuid, uuid_temp); + uuid_str = std::string(uuid_temp); + } + + std::unique_ptr> Subscribe(const int topic) { SubscribeRequest request; request.set_topic(topic); - request.set_sub_name(name); + request.set_sub_name(uuid_str); Message msg; SubFlag = true; @@ -59,10 +66,10 @@ class PubSubClient { } } - void UnSubscribe(const int topic, const std::string& name) { + void UnSubscribe(const int topic) { UnSubscribeRequest request; request.set_topic(topic); - request.set_sub_name(name); + request.set_sub_name(uuid_str); ClientContext unsub_context; Message msg; @@ -91,6 +98,7 @@ class PubSubClient { std::unique_ptr stub_; bool SubFlag; ClientContext context; + std::string uuid_str; }; int main(int argc, char** argv) { @@ -98,18 +106,18 @@ int main(int argc, char** argv) { PubSubClient client(grpc::CreateChannel( server_address, grpc::InsecureChannelCredentials())); - if (argc != 3) { - std::cout << "[Usage] ./client_sub_demo topic_num suber_name" << std::endl; + if (argc != 2) { + std::cout << "[Usage] ./client_sub_demo topic_num" << std::endl; } - std::unique_ptr> cli_reader = client.Subscribe(std::stoi(argv[1]), argv[2]); + std::unique_ptr> cli_reader = client.Subscribe(std::stoi(argv[1])); std::string some_data = client.ReadFrom(cli_reader); std::cout << "whz: " << some_data << std::endl; while (some_data != "" && some_data != "end") { some_data = client.ReadFrom(cli_reader); std::cout << "loop whz: " << some_data << std::endl; } - client.UnSubscribe(std::stoi(argv[1]), argv[2]); + client.UnSubscribe(std::stoi(argv[1])); return 0; } diff --git a/observer_agent/grpc_comm/grpc_api.h b/observer_agent/grpc_comm/grpc_api.h index 624da97c6f8b12258287fda9c9098c1344969f60..4bfae781e55860fef4567e477e534fcf6152323d 100644 --- a/observer_agent/grpc_comm/grpc_api.h +++ b/observer_agent/grpc_comm/grpc_api.h @@ -2,6 +2,7 @@ #define SECDETECTOR_OBSERVER_AGENT_GRPC_API_H #include +#include #include "comm_api.grpc.pb.h" using grpc::Server; @@ -34,15 +35,16 @@ void RunServer(); class PubSubClient { public: PubSubClient(std::shared_ptr channel); - std::unique_ptr> Subscribe(const int topic, const std::string& name); + std::unique_ptr> Subscribe(const int topic); void Publish(const int topic, const std::string& content); - void UnSubscribe(const int topic, const std::string& name); + void UnSubscribe(const int topic); std::string ReadFrom(std::unique_ptr> &reader); private: std::unique_ptr stub_; bool SubFlag; ClientContext context; + std::string uuid_str; }; #endif