From c46be6db32872bfd7c4010b43526b5e6bc0fa6a5 Mon Sep 17 00:00:00 2001
From: wangzhengquan <wangzhengquan85@126.com>
Date: 星期一, 25 一月 2021 14:04:59 +0800
Subject: [PATCH] update

---
 test_socket/bus_test.cpp |   46 +++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 39 insertions(+), 7 deletions(-)

diff --git a/test_socket/bus_test.cpp b/test_socket/bus_test.cpp
index cdd6142..f84ad52 100644
--- a/test_socket/bus_test.cpp
+++ b/test_socket/bus_test.cpp
@@ -3,6 +3,10 @@
 #include "shm_mm_wrapper.h"
 #include "usg_common.h"
 #include "mm.h"
+#include "logger_factory.h"
+#include "bus_error.h"
+
+static Logger *logger = LoggerFactory::getLogger();
 
 BusServerSocket * server_socket;
 void sigint_handler(int sig) {
@@ -19,34 +23,62 @@
 }
 
 
-void *run_recv(void *skptr) {
+void *run_recv2(void *skptr) {
   pthread_detach(pthread_self());
   void *recvbuf;
   int size;
   int key;
+  int rv;
   ShmModSocket *sk = (ShmModSocket *)skptr;
-  while (sk->recvfrom( &recvbuf, &size, &key) == 0) {
-    printf("鏀跺埌璁㈤槄娑堟伅:%s\n", recvbuf);
-    free(recvbuf);
+printf("run_recv\n");
+  struct timespec timeout = {2, 0};
+  while (true) {
+    printf("run_recv before\n");
+
+    rv = sk->recvfrom_timeout( &recvbuf, &size, &key, &timeout);
+    if(rv == 0) {
+      printf("鏀跺埌璁㈤槄娑堟伅:%s\n", recvbuf);
+      free(recvbuf);
+    } else {
+      printf("recvfrom error %d\n", rv);
+    }
+     
   }
+  return NULL;
   
+}
+
+void *run_recv(void *skptr) {
+  while(true) {
+    logger->debug("================run_recv\n");
+    sleep(1);
+  }
+}
+
+void client2(int key) {
+  ShmModSocket *sk = new ShmModSocket();
+  run_recv((void *)sk);
 }
 
 void client(int key) {
   ShmModSocket *sk = new ShmModSocket();
   
   pthread_t tid;
-  pthread_create(&tid, NULL, run_recv, (void *)socket);
+
   int size;
   
   char action[512];
   char topic[512];
   char content[512];
   long i = 0;
+
+  pthread_create(&tid, NULL, run_recv, (void *)sk);
+
   while (true) {
     //printf("Usage: pub <topic> [content] or sub <topic>\n");
-    printf("Can I help you? sub, pub, desub or quit\n");
-    scanf("%s",action);
+    printf("Can I help you? sub, pub, desub or quit %d\n", i++);
+    // sleep(100);
+    scanf("%s", action);
     
     if(strcmp(action, "sub") == 0) {
       printf("Please input topic!\n");

--
Gitblit v1.8.0