From d90b3c3779d9c6bd2884540621d107e4ac10e930 Mon Sep 17 00:00:00 2001 From: zhangmeng <775834166@qq.com> Date: 星期四, 04 八月 2022 09:10:58 +0800 Subject: [PATCH] tcp remote reduce timeout in readrequest --- main.cpp | 99 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 97 insertions(+), 2 deletions(-) diff --git a/main.cpp b/main.cpp index ecbaa5a..e016ba9 100644 --- a/main.cpp +++ b/main.cpp @@ -93,11 +93,106 @@ }); } + +#include "bhome_msg.pb.h" +#include "bhome_msg_api.pb.h" +using namespace bhome_msg; + int main(int argc, char const *argv[]) { // run_test([&]{test_rr();}); - test_rr(); - test_ps(); + + // test_rr(); + // test_ps(); + // return 0; + + int reply = 1; + + string id("hello-reply"); + if (argc > 1) { + printf("this is request\n"); + id = "hello-request"; + reply = 0; + }else{ + printf("this is reply\n"); + } + + ProcInfo pi; + pi.set_proc_id(id); + pi.set_name("works"); + + string out; + pi.SerializeToString(&out); + + void* rep; + int repl = 0; + BHRegister(out.data(), out.size(), &rep, &repl, 500); + + if (reply){ + while (true) { + void* pid; + int pidl; + void* req; + int reql; + void* src; + + if (BHReadRequest(&pid, &pidl, &req, &reql, &src, 500)){ + + bhome_msg::MsgRequestTopic msg; + msg.ParseFromArray(req, reql); + printf("recv request %d msg data %s\n", reql, msg.data().c_str()); + + bhome_msg::MsgRequestTopicReply rep; + rep.set_data(msg.data() + "-reply"); + string srep; + rep.SerializeToString(&srep); + + // auto s = chrono::steady_clock::now(); + int ret = BHSendReply(src, srep.data(), srep.size()); + // auto e = chrono::steady_clock::now(); + // printf("reply time %lu ms\n", chrono::duration_cast<chrono::milliseconds>(e-s).count()); + + }else{ + // usleep(50000); + // printf("BHReadRequest no data\n"); + } + } + }else{ + printf("start request %d\n", atoi(argv[1])); + bhome_msg::BHAddress addr; + addr.set_ip("192.168.20.108"); + addr.set_port(atoi(argv[1])); + + string node; + addr.SerializeToString(&node); + + void* pid; + int pidl; + void* rep; + int repl; + unsigned idx = 0; + while(1){ + + bhome_msg::MsgRequestTopic msg; + msg.set_topic("hello-reply"); + msg.set_data("hell-world-" + to_string(getpid()) + "-" + to_string(idx++)); + string smsg; + msg.SerializeToString(&smsg); + + // auto s = chrono::steady_clock::now(); + int ret = BHRequest(node.data(), node.size(), smsg.data(), smsg.size(), + &pid, &pidl, &rep, &repl, 5000); + // auto e = chrono::steady_clock::now(); + // printf("request time %lu ms\n", chrono::duration_cast<chrono::milliseconds>(e-s).count()); + + bhome_msg::MsgRequestTopicReply prep; + prep.ParseFromArray(rep, repl); + + printf("pid %d BHRequest rep data %s size %d ret %d\n", getpid(), prep.data().c_str(), + repl, ret); + + } + } return 0; } \ No newline at end of file -- Gitblit v1.8.0