From 6ea861affc9568d4664fa66f82301994cabac28c Mon Sep 17 00:00:00 2001 From: Fei Li Date: Thu, 24 Mar 2022 15:27:58 +0800 Subject: [PATCH] Misc: life_mngr: a new common function to handle socket Add a new common function to handle socket request, this will make it is easy to add more socket request in windows lifecycle manager. Tracked-On: #7215 Signed-off-by: Xiangyang Wu Signed-off-by: Fei Li --- misc/services/life_mngr/life_mngr_win.c | 28 +++++++++++++++++-------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/misc/services/life_mngr/life_mngr_win.c b/misc/services/life_mngr/life_mngr_win.c index 4d5a96492..3b67023ae 100644 --- a/misc/services/life_mngr/life_mngr_win.c +++ b/misc/services/life_mngr/life_mngr_win.c @@ -23,8 +23,8 @@ #define SYNC_FMT "sync:%s" #define S5_REJECTED "system shutdown request is rejected" -#define BUFF_SIZE (32U) -#define MSG_SIZE (8U) +#define BUFF_SIZE (32U) +#define MSG_SIZE (8U) #define VM_NAME_LEN (sizeof(WIN_VM_NAME)) #define UVM_SOCKET_PORT (0x2001U) #define READ_INTERVAL (100U) /* The time unit is microsecond */ @@ -58,6 +58,18 @@ void stop_uart_resend(void) memset(resend_buf, 0x0, BUFF_SIZE); resend_time = 0U; } +void handle_socket_request(SOCKET sClient, char *req_message) +{ + char ack_message[BUFF_SIZE]; + + snprintf(ack_message, sizeof(ack_message), "ack_%s", req_message); + Sleep(6U * MS_TO_SECOND); + send(sClient, ack_message, sizeof(ack_message), 0); + start_uart_resend(req_message, MIN_RESEND_TIME); + send_message_by_uart(hCom2, req_message, sizeof(req_message)); + Sleep(2U * READ_INTERVAL); + return; +} DWORD WINAPI open_socket_server(LPVOID lpParam) { WORD sockVersion = MAKEWORD(2, 2); @@ -67,7 +79,6 @@ DWORD WINAPI open_socket_server(LPVOID lpParam) SOCKET sClient; struct sockaddr_in remoteAddr; int nAddrlen = sizeof(remoteAddr); - char *sendData = ACK_REQ_SYS_SHUTDOWN; int ret; ret = WSAStartup(sockVersion, &wsaData); @@ -107,12 +118,11 @@ DWORD WINAPI open_socket_server(LPVOID lpParam) printf(revData); } Sleep(READ_INTERVAL); - } while (strncmp(revData, REQ_SYS_SHUTDOWN, sizeof(REQ_SYS_SHUTDOWN)) != 0); - Sleep(6U * MS_TO_SECOND); - send(sClient, sendData, strlen(sendData), 0); - start_uart_resend(REQ_SYS_SHUTDOWN, MIN_RESEND_TIME); - send_message_by_uart(hCom2, REQ_SYS_SHUTDOWN, sizeof(REQ_SYS_SHUTDOWN)); - Sleep(2 * READ_INTERVAL); + if (strncmp(revData, REQ_SYS_SHUTDOWN, sizeof(REQ_SYS_SHUTDOWN)) == 0) { + handle_socket_request(sClient, REQ_SYS_SHUTDOWN); + break; + } + } while (1); closesocket(sClient); sock_exit: closesocket(slisten);