From 2561a007b8d8999a4750046d0cfb3b1ad5af50ac Mon Sep 17 00:00:00 2001
From: zhangmeng <775834166@qq.com>
Date: 星期二, 09 四月 2024 15:29:32 +0800
Subject: [PATCH] test for perf

---
 src/bus_proxy_start.cpp |   77 +++++++++++++++++++++++++++++++++++---
 1 files changed, 71 insertions(+), 6 deletions(-)

diff --git a/src/bus_proxy_start.cpp b/src/bus_proxy_start.cpp
index a04edad..6029e6e 100644
--- a/src/bus_proxy_start.cpp
+++ b/src/bus_proxy_start.cpp
@@ -10,10 +10,16 @@
 #include <errno.h>
 #include <getopt.h>
 #include <stdlib.h>
+#include "proc_def.h"
+#include "msg_mgr.h"
+
+using namespace std;
 
 #define SVR_PORT            5000
 
-#define TOTAL_THREADS       2
+#define TOTAL_THREADS       3
+
+#define MAX_RETRIES         3
 
 static void *gBusServer_socket = NULL;
 static void *gServer_socket = NULL;
@@ -24,8 +30,10 @@
 static int gBusServer_act = 0;
 static int gBusServer_stat = 0;
 
-pthread_t tids[2];
-void *res[2];
+pthread_t tids[TOTAL_THREADS];
+void *res[TOTAL_THREADS];
+
+extern list gLinkedList;
 
 void *bus_start(void *skptr) {
 
@@ -39,15 +47,64 @@
   return NULL;
 }
 
-
-
-
 void *svr_start(void *skptr) {
   int port = *(int *)skptr;
 
   gServer_socket  = net_mod_server_socket_open(port);
   if(net_mod_server_socket_start(gServer_socket) != 0) {
     printf("start net mod server failed\n");
+  }
+
+  return NULL;
+}
+
+void *check_start(void *skptr) {
+  int i;
+  int ret;
+  int val;
+  int thres;
+  int data;
+  int data_ret;
+  int total;
+  void *buf;
+  int size;
+  char buf_temp[MAX_STR_LEN] = { 0x00 };
+  
+  struct timespec timeout = {.tv_sec = 3, .tv_nsec = 0};
+
+  while(true) {
+    total = gLinkedList.NodeNum();
+    for (i = 0; i < total; i++) {
+      
+      val = gLinkedList.nodeGet(i);
+      if (val > 0) {
+        data_ret = bus_server_socket_wrapper_data_get(gBusServer_socket, val);
+        thres = gLinkedList.dataGet(val);
+        if ((data_ret == true) && (thres < MAX_RETRIES)) {
+
+          data = gLinkedList.dataFixGet(val);
+          sprintf(buf_temp, "%d", i + 1);
+          ret = bus_server_socket_wrapper_proc_check(gBusServer_socket, data, buf_temp, strlen(buf_temp), &buf, &size, &timeout, BUS_TIMEOUT_FLAG);
+          if (ret == 0) {
+            gLinkedList.dataSet(val, 0x00);
+
+            free(buf);
+          } else {
+
+            gLinkedList.dataSet(val, ++thres);
+          }
+          
+        } else {
+          
+          gLinkedList.Delete(val);
+          if (thres >= MAX_RETRIES) {
+            bus_server_socket_wrapper_proc_release(gBusServer_socket, val);
+          }
+        }
+      }
+    }
+
+    sleep(WT_INT);
   }
 
   return NULL;
@@ -93,6 +150,10 @@
     }
   }
 
+#if defined(MSG_HANDLER)
+  msg_init();
+#endif 
+
   if (gShm_size == -1) {
     gShm_size = SHM_RES_SIZE;
   }
@@ -110,6 +171,10 @@
 
   if (gBusServer_stat >= 0) { 
     pthread_create(&tids[1], NULL, svr_start, (void *)&gPort);
+    
+    pthread_create(&tids[2], NULL, check_start, NULL);
+
+    //pthread_create(&tids[3], NULL, sem_msg_handler, NULL);
   }
 
   for (i = 0; i< TOTAL_THREADS; i++) {

--
Gitblit v1.8.0