From 46996c4ee656e1d4ccd4f989ffaceee418e9eebc Mon Sep 17 00:00:00 2001 From: liqiang Date: Thu, 3 Aug 2023 14:21:57 +0800 Subject: [PATCH 1/2] Remove the strongly socket-related design in the conn interface and change it to a general abstraction Signed-off-by: liqiang --- qtfs/include/conn.h | 3 +-- qtfs/qtfs_common/conn.c | 20 ++++---------------- qtfs/qtfs_common/socket.c | 6 +++--- 3 files changed, 8 insertions(+), 21 deletions(-) diff --git a/qtfs/include/conn.h b/qtfs/include/conn.h index fb01460..82d8448 100644 --- a/qtfs/include/conn.h +++ b/qtfs/include/conn.h @@ -128,10 +128,9 @@ struct qtfs_conn_ops_s { // connection related ops int (*conn_init)(void *connvar, qtfs_conn_type_e type); void (*conn_fini)(void *connvar, qtfs_conn_type_e type); + int (*conn_new_connection)(void *connvar, qtfs_conn_type_e type); int (*conn_send)(void *connvar, void *buf, size_t len); int (*conn_recv)(void *connvar, void *buf, size_t len, bool block); - int (*conn_server_accept)(void *connvar, qtfs_conn_type_e type); - int (*conn_client_connect)(void *connvar); bool (*conn_inited)(void *connvar, qtfs_conn_type_e type); bool (*conn_connected)(void *connvar); void (*conn_recv_buff_drop)(void *connvar); diff --git a/qtfs/qtfs_common/conn.c b/qtfs/qtfs_common/conn.c index 6926d6d..81dd1fd 100644 --- a/qtfs/qtfs_common/conn.c +++ b/qtfs/qtfs_common/conn.c @@ -352,28 +352,16 @@ void *qtfs_conn_msg_buf(struct qtfs_conn_var_s *pvar, int dir) static int qtfs_sm_connecting(struct qtfs_conn_var_s *pvar) { int ret = QTERROR; - -#ifdef QTFS_SERVER - ret = pvar->conn_ops->conn_server_accept(&pvar->conn_var, pvar->user_type); - if (ret == 0) { - qtfs_info("qtfs sm connecting accept a new connection"); - } else { - msleep(500); - } -#endif -#ifdef QTFS_CLIENT - int retry; - qtfs_info("qtfs sm connecting wait for server thread:%d", pvar->cur_threadidx); - retry = 3; + int retry = 3; + qtfs_info("qtfs sm connecting thread:%d", pvar->cur_threadidx); while (qtfs_mod_exiting == false && retry-- > 0) { - ret = pvar->conn_ops->conn_client_connect(&pvar->conn_var); + ret = pvar->conn_ops->conn_new_connection(&pvar->conn_var, pvar->user_type); if (ret == 0) { qtfs_info("qtfs sm connecting connect to a new connection."); break; } - msleep(1); + msleep(10); } -#endif return ret; } diff --git a/qtfs/qtfs_common/socket.c b/qtfs/qtfs_common/socket.c index 9e999f5..f9f509a 100644 --- a/qtfs/qtfs_common/socket.c +++ b/qtfs/qtfs_common/socket.c @@ -234,7 +234,7 @@ err_end: } #endif #ifdef QTFS_CLIENT -static int qtfs_conn_sock_client_connect(void *connvar) +static int qtfs_conn_sock_client_connect(void *connvar, qtfs_conn_type_e type) { struct qtfs_sock_var_s *sockvar = (struct qtfs_sock_var_s *)connvar; struct socket *sock = sockvar->client_sock; @@ -427,11 +427,11 @@ struct qtfs_conn_ops_s qtfs_conn_sock_ops = { .conn_send = qtfs_conn_sock_send, .conn_recv = qtfs_conn_sock_recv, #ifdef QTFS_SERVER - .conn_server_accept = qtfs_conn_sock_server_accept, + .conn_new_connection = qtfs_conn_sock_server_accept, .conn_inited = qtfs_conn_sock_inited, #endif #ifdef QTFS_CLIENT - .conn_client_connect = qtfs_conn_sock_client_connect, + .conn_new_connection = qtfs_conn_sock_client_connect, .conn_recv_buff_drop = qtfs_sock_drop_recv_buf, #endif .conn_connected = qtfs_conn_sock_connected, -- Gitee From c15ec128d395524622676cd1d3cb699fb89b8cf7 Mon Sep 17 00:00:00 2001 From: liqiang Date: Thu, 3 Aug 2023 14:37:45 +0800 Subject: [PATCH 2/2] delete unuse variable 'cs' in pvar Signed-off-by: liqiang --- qtfs/include/conn.h | 1 - qtfs/qtfs_common/conn.c | 8 -------- 2 files changed, 9 deletions(-) diff --git a/qtfs/include/conn.h b/qtfs/include/conn.h index 82d8448..e9d3b90 100644 --- a/qtfs/include/conn.h +++ b/qtfs/include/conn.h @@ -150,7 +150,6 @@ extern struct qtfs_pvar_ops_s *g_pvar_ops; struct qtfs_conn_var_s { struct list_head lst; struct llist_node lazy_put; - int cs; int cur_threadidx; int miss_proc; unsigned long seq_num; diff --git a/qtfs/qtfs_common/conn.c b/qtfs/qtfs_common/conn.c index 81dd1fd..d250251 100644 --- a/qtfs/qtfs_common/conn.c +++ b/qtfs/qtfs_common/conn.c @@ -353,7 +353,6 @@ static int qtfs_sm_connecting(struct qtfs_conn_var_s *pvar) { int ret = QTERROR; int retry = 3; - qtfs_info("qtfs sm connecting thread:%d", pvar->cur_threadidx); while (qtfs_mod_exiting == false && retry-- > 0) { ret = pvar->conn_ops->conn_new_connection(&pvar->conn_var, pvar->user_type); if (ret == 0) { @@ -642,7 +641,6 @@ retry: #ifdef QTFS_CLIENT mutex_unlock(&g_param_mutex); - pvar->cs = QTFS_CONN_SOCK_CLIENT; ret = qtfs_sm_active(pvar); if (ret) { qtfs_err("qtfs get param active connection failed, ret:%d, curstate:%s", ret, QTCONN_CUR_STATE(pvar)); @@ -652,7 +650,6 @@ retry: } qtfs_thread_var[pvar->cur_threadidx] = pvar; #else - pvar->cs = QTFS_CONN_SOCK_SERVER; if (!pvar->conn_ops->conn_inited(pvar, pvar->user_type)) { if ((ret = qtfs_sm_active(pvar)) != 0) { qtfs_err("qtfs get param active connection failed, ret:%d, curstate:%s", ret, QTCONN_CUR_STATE(pvar)); @@ -714,11 +711,6 @@ struct qtfs_conn_var_s *qtfs_epoll_establish_conn(void) } pvar->state = QTCONN_INIT; -#ifdef QTFS_CLIENT - pvar->cs = QTFS_CONN_SOCK_CLIENT; -#else - pvar->cs = QTFS_CONN_SOCK_SERVER; -#endif ret = qtfs_sm_active(pvar); if (ret) { qtfs_err("qtfs epoll get param active new param failed, ret:%d state:%s", ret, QTCONN_CUR_STATE(pvar)); -- Gitee