wangzhengquan
2021-02-24 fcdbbd495c15b0b12e03f50a5c5fa1a6c30a737b
test_net_socket/test_net_mod_socket.cpp
@@ -75,6 +75,11 @@
   }
}
void start_resycle() {
  shm_mm_wrapper_start_resycle();
}
// 打印接受到的订阅消息
void *print_sub_msg(void *sockt) {
  pthread_detach(pthread_self());
@@ -91,46 +96,27 @@
  
}
void * bus_server;
void *bus_handler(void *sockt) {
  // pthread_detach(pthread_self());
  char action[512];
  while ( true) {
    printf("Input action: Close?\n");
    if(scanf("%s",action) < 1) {
      printf("Invalide action\n");
      continue;
    }
    if(strcmp(action, "close") == 0) {
      bus_server_socket_wrapper_close(sockt);
      break;
    } else {
      printf("Invalide action\n");
    }
  }
static void stop_bus_handler(int sig) {
  bus_server_socket_wrapper_stop(bus_server);
}
void start_bus_server(argument_t &arg) {
  printf("Start bus server\n");
  void * server_socket = bus_server_socket_wrapper_open();
  pthread_t tid;
  // 创建一个线程,可以关闭bus
  if(arg.interactive)
    pthread_create(&tid, NULL, bus_handler, server_socket);
  bus_server = bus_server_socket_wrapper_open();
  signal(SIGINT,  stop_bus_handler);
  signal(SIGTERM,  stop_bus_handler);
  if(bus_server_socket_wrapper_start_bus(server_socket) != 0) {
  if(bus_server_socket_wrapper_start_bus(bus_server) != 0) {
    printf("start bus failed\n");
    exit(1);
  }
  if (pthread_join(tid, NULL) != 0) {
    perror(" pthread_join");
  }
  bus_server_socket_wrapper_close(bus_server);
}
void *serverSockt;
@@ -183,9 +169,10 @@
  }
  
    //rv = net_mod_socket_recvandsend_timeout(serverSockt, _recvandsend_callback_ , 0, 2000000, NULL );
  // rv = net_mod_socket_recvandsend_timeout(serverSockt, _recvandsend_callback_ , 0, 2000000, NULL );
  net_mod_socket_close(serverSockt);
  logger->debug("stopted\n");
  // while ( (rv = net_mod_socket_recvfrom(ser, &recvbuf, &size, &key) ) == 0) {
  //  // printf( "server: RECEIVED REQUEST FROM  %d NAME %s\n", key, recvbuf);
  //   sprintf(sendbuf, "%d RECEIVED %s", net_mod_socket_get_key(ser), (char *)recvbuf);
@@ -388,7 +375,8 @@
  double difftime = end.tv_sec * 1000000 + end.tv_usec - (start.tv_sec * 1000000 + start.tv_usec);
  long diffsec = (long) (difftime/1000000);
  long diffusec = difftime - diffsec*1000000;
  fprintf(stderr,"发送数目: %ld, 用时: (%ld sec %ld usec), 平均: %f\n", total, diffsec, diffusec, difftime/total );
  fprintf(stderr,"发送数目:%ld, 成功数目: %ld, 用时: (%ld sec %ld usec), 平均: %f\n",
    SCALE*node_arr_size, total, diffsec, diffusec, difftime/total );
  // fflush(stdout);
 
}
@@ -457,7 +445,7 @@
  net_node_t *node_arr;
  int node_arr_size = parse_node_list(targ->nodelist, &node_arr);
 
  char *topic = "news";
  const char *topic = "news";
  // char filename[512];
  // sprintf(filename, "test%d.tmp", targ->id);
  // FILE *fp = NULL;
@@ -536,99 +524,6 @@
    LoggerFactory::getLogger()->debug( "pub to  %d nodes\n", n);
  }
  net_mod_socket_close(client);
}
int main(int argc, char *argv[]) {
   shm_mm_wrapper_init(512);
  argument_t opt = parse_args(argc, argv);
 // port = atoi(argv[2]);
  if(opt.fun == NULL) {
    usage(argv[0]);
    exit(1);
  }
   if (strcmp("start_net_proxy", opt.fun) == 0 ) {
    if(opt.port == 0) {
      usage(argv[0]);
      exit(1);
    }
    start_net_proxy(opt);
  }
  else if (strcmp("start_bus_server", opt.fun) == 0) {
    start_bus_server(opt);
  }
  else if (strcmp("start_reply", opt.fun) == 0) {
    if(opt.key == 0) {
      usage(argv[0]);
      exit(1);
    }
    start_reply(opt.key);
  }
  else if (strcmp("start_net_client", opt.fun) == 0) {
    if(opt.sendlist == 0) {
      fprintf(stderr, "Missing sendlist .\n");
      usage(argv[0]);
      exit(1);
    }
    if(opt.publist == 0) {
      fprintf(stderr, "Missing publist.\n");
      usage(argv[0]);
      exit(1);
    }
    start_net_client(opt.sendlist, opt.publist);
  }
  else if (strcmp("one_sendto_many", opt.fun) == 0) {
    if(opt.sendlist == 0) {
      fprintf(stderr, "Missing sendlist .\n");
      usage(argv[0]);
      exit(1);
    }
    one_sendto_many(opt.sendlist);
  }
  else if (strcmp("test_net_sendandrecv", opt.fun) == 0) {
    if(opt.sendlist == 0) {
      fprintf(stderr, "Missing sendlist .\n");
      usage(argv[0]);
      exit(1);
    }
    test_net_sendandrecv(opt.sendlist);
  }
  else if (strcmp("test_net_pub_threads", opt.fun) == 0) {
    if(opt.publist == 0) {
      fprintf(stderr, "Missing publist .\n");
      usage(argv[0]);
      exit(1);
    }
    test_net_pub_threads(opt.publist);
  }
  else if (strcmp("test_net_pub", opt.fun) == 0) {
    if(opt.publist == 0) {
      fprintf(stderr, "Missing publist .\n");
      usage(argv[0]);
      exit(1);
    }
    test_net_pub(opt.publist);
  }
  else {
    usage(argv[0]);
    exit(1);
  }
  printf("==========end========\n");
  shm_mm_wrapper_destroy();
}
@@ -808,3 +703,101 @@
  }
  printf("============node list end==========\n");
}
int main(int argc, char *argv[]) {
  shm_mm_wrapper_init(512);
  argument_t opt = parse_args(argc, argv);
 // port = atoi(argv[2]);
  if(opt.fun == NULL) {
    usage(argv[0]);
    exit(1);
  }
  if (strcmp("start_net_proxy", opt.fun) == 0 ) {
    if(opt.port == 0) {
      usage(argv[0]);
      exit(1);
    }
    start_net_proxy(opt);
  }
  else if (strcmp("start_bus_server", opt.fun) == 0) {
    start_bus_server(opt);
  }
  else if (strcmp("start_reply", opt.fun) == 0) {
    if(opt.key == 0) {
      usage(argv[0]);
      exit(1);
    }
    start_reply(opt.key);
  }
  else if (strcmp("start_net_client", opt.fun) == 0) {
    if(opt.sendlist == 0) {
      fprintf(stderr, "Missing sendlist .\n");
      usage(argv[0]);
      exit(1);
    }
    if(opt.publist == 0) {
      fprintf(stderr, "Missing publist.\n");
      usage(argv[0]);
      exit(1);
    }
    start_net_client(opt.sendlist, opt.publist);
  }
  else if (strcmp("one_sendto_many", opt.fun) == 0) {
    if(opt.sendlist == 0) {
      fprintf(stderr, "Missing sendlist .\n");
      usage(argv[0]);
      exit(1);
    }
    one_sendto_many(opt.sendlist);
  }
  else if (strcmp("test_net_sendandrecv", opt.fun) == 0) {
    if(opt.sendlist == 0) {
      fprintf(stderr, "Missing sendlist .\n");
      usage(argv[0]);
      exit(1);
    }
    test_net_sendandrecv(opt.sendlist);
  }
  else if (strcmp("test_net_pub_threads", opt.fun) == 0) {
    if(opt.publist == 0) {
      fprintf(stderr, "Missing publist .\n");
      usage(argv[0]);
      exit(1);
    }
    test_net_pub_threads(opt.publist);
  }
  else if (strcmp("test_net_pub", opt.fun) == 0) {
    if(opt.publist == 0) {
      fprintf(stderr, "Missing publist .\n");
      usage(argv[0]);
      exit(1);
    }
    test_net_pub(opt.publist);
  }
  else if (strcmp("start_resycle", opt.fun) == 0) {
    start_resycle();
  }
  else {
    usage(argv[0]);
    exit(1);
  }
  printf("==========end========\n");
  // shm_mm_wrapper_destroy();
}