repeat.cc 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #include "swoole_server.h"
  2. using namespace swoole;
  3. int main(int argc, char **argv) {
  4. swoole_init();
  5. enum Server::Mode factory_mode;
  6. if (argc > 1) {
  7. factory_mode = Server::MODE_PROCESS;
  8. } else {
  9. factory_mode = Server::MODE_BASE;
  10. }
  11. for (int i = 0; i < 2; i++) {
  12. Server serv(factory_mode);
  13. serv.reactor_num = 1;
  14. serv.worker_num = 1;
  15. serv.onReceive = [](Server *serv, RecvData *req) { return SW_OK; };
  16. serv.onPacket = [](Server *serv, RecvData *req) { return SW_OK; };
  17. serv.onWorkerStart = [](Server *serv, int worker_id) {
  18. swNotice("WorkerStart[%d]PID=%d, serv=%p,", worker_id, getpid(), serv);
  19. swoole_timer_after(
  20. 1000,
  21. [serv](Timer *, TimerNode *tnode) {
  22. printf("timer=%p\n", tnode);
  23. if (serv->is_base_mode()) {
  24. kill(getpid(), SIGTERM);
  25. } else {
  26. kill(serv->gs->master_pid, SIGTERM);
  27. }
  28. },
  29. nullptr);
  30. };
  31. serv.add_port(SW_SOCK_UDP, "0.0.0.0", 9502);
  32. serv.add_port(SW_SOCK_TCP6, "::", 9503);
  33. serv.add_port(SW_SOCK_UDP6, "::", 9504);
  34. ListenPort *port = serv.add_port(SW_SOCK_TCP, "127.0.0.1", 9501);
  35. if (!port) {
  36. swWarn("listen failed, [error=%d]", swoole_get_last_error());
  37. exit(2);
  38. }
  39. port->open_eof_check = 0;
  40. // config
  41. port->backlog = 128;
  42. memcpy(port->protocol.package_eof, SW_STRL("\r\n\r\n"));
  43. if (serv.create()) {
  44. swWarn("create server fail[error=%d]", swoole_get_last_error());
  45. exit(1);
  46. }
  47. if (serv.start() < 0) {
  48. swWarn("start server fail[error=%d]", swoole_get_last_error());
  49. exit(3);
  50. }
  51. }
  52. return 0;
  53. }