From 6d169e371c0d517f482dbd2391ca5ffaca7620f7 Mon Sep 17 00:00:00 2001 From: koinec <> Date: Sat, 12 Dec 2009 11:24:32 +0000 Subject: [PATCH] *** empty log message *** --- deamon/drd64_debugd_dispatch.c | 6 +-- deamon/drd64_marshald_dispatch.c | 6 +-- deamon/drd64_server_recvstatus.c | 99 +++++++++++++++++++++++++++++++++++++--- deamon/drd64_server_recvstatus.h | 15 +++++- 4 files changed, 112 insertions(+), 14 deletions(-) diff --git a/deamon/drd64_debugd_dispatch.c b/deamon/drd64_debugd_dispatch.c index 00ab933..d13664c 100644 --- a/deamon/drd64_debugd_dispatch.c +++ b/deamon/drd64_debugd_dispatch.c @@ -47,7 +47,7 @@ void { close( i_fds ); FD_CLR( i_fds, &fds_orig ); - Drd64_Server_RecvStatus_FreeRecvStatus( i_fds ); + Drd64_Server_RecvStatus_CloseRecvStatus( i_fds ); DRD64_DEBUG_PRINT("CloseSocket",i_fds,"errono",errno,NULL,0); return; } @@ -184,7 +184,7 @@ int int i_result; Drd64_Server_RecvStatus *p_recv; - p_recv = Drd64_Server_RecvStatus_GetResumeStart(); + p_recv = Drd64_Server_RecvStatus_GetResumeChainStart(); while( NULL != p_recv ) { if( DRD64_SERVER_RECVSTATUS_STATUS_RESUME == p_recv->b_recv_status ) { @@ -202,7 +202,7 @@ int if( NULL != p_recv ) { p_recv = (Drd64_Server_RecvStatus *)p_recv->pv_recv_next; } else - { p_recv = Drd64_Server_RecvStatus_GetResumeStart(); } + { p_recv = Drd64_Server_RecvStatus_GetResumeChainStart(); } } return 0x00; diff --git a/deamon/drd64_marshald_dispatch.c b/deamon/drd64_marshald_dispatch.c index 3a58a08..047e231 100644 --- a/deamon/drd64_marshald_dispatch.c +++ b/deamon/drd64_marshald_dispatch.c @@ -56,7 +56,7 @@ void { close( i_fds ); FD_CLR( i_fds, &g_fds_orig ); - Drd64_Server_RecvStatus_FreeRecvStatus( i_fds ); + Drd64_Server_RecvStatus_CloseRecvStatus( i_fds ); DRD64_DEBUG_PRINT("CloseSocket",i_fds,"errono",errno,NULL,0); return; } @@ -237,7 +237,7 @@ int int i_result; Drd64_Server_RecvStatus *p_recv; - p_recv = Drd64_Server_RecvStatus_GetResumeStart(); + p_recv = Drd64_Server_RecvStatus_GetResumeChainStart(); while( NULL != p_recv ) { if( DRD64_SERVER_RECVSTATUS_STATUS_RESUME == p_recv->b_recv_status ) { @@ -259,7 +259,7 @@ int p_recv = (Drd64_Server_RecvStatus *)p_recv->pv_recv_next; } else { - p_recv = Drd64_Server_RecvStatus_GetResumeStart(); + p_recv = Drd64_Server_RecvStatus_GetResumeChainStart(); } } diff --git a/deamon/drd64_server_recvstatus.c b/deamon/drd64_server_recvstatus.c index edff444..62752a2 100644 --- a/deamon/drd64_server_recvstatus.c +++ b/deamon/drd64_server_recvstatus.c @@ -46,6 +46,8 @@ int gi_recvstat_max; Drd64_Server_RecvStatus *gp_recv_resume_start; Drd64_Server_RecvStatus *gp_recv_resume_end; int gi_recv_resume_max; +Drd64_Server_RecvStatus *gp_recv_sockets_start; +Drd64_Server_RecvStatus *gp_recv_sockets_end; int @@ -158,6 +160,9 @@ int gp_recv_resume_start = NULL; gi_recv_resume_max = FD_SETSIZE; + gp_recv_sockets_start = NULL; + gp_recv_sockets_end = NULL; + return 0x00; } @@ -224,9 +229,25 @@ Drd64_Server_RecvStatus * } -EXTERN_SERVER_RECVSTATUS void Drd64_Server_RecvStatus_FreeRecvStatus( + Drd64_Server_RecvStatus *p_recv ) +{ + assert( NULL != p_recv ); + + p_recv->pv_recv_before = NULL; + p_recv->pv_recv_next = NULL; + + p_recv->i_recvstatus_id = -1; + p_recv->i_fds_id = -1; + + return; +} + + +EXTERN_SERVER_RECVSTATUS +void + Drd64_Server_RecvStatus_CloseRecvStatus( int i_fds ) { int i_cnt; @@ -250,8 +271,9 @@ void if( 0 == i_cnt ) { gi_recvstat_max = 0; } } - p_recv_now->i_recvstatus_id = -1; - p_recv_now->i_fds_id = -1; + /* p_recv_now->i_recvstatus_id = -1; */ + /* p_recv_now->i_fds_id = -1; */ + Drd64_Server_RecvStatus_FreeRecvStatus( p_recv_now ); } return; @@ -357,12 +379,65 @@ int } *(gpp_recvstat + i_recv_id) = NULL; - p_recv_self->pv_recv_before = NULL; + + /* p_recv_self->pv_recv_before = NULL; p_recv_self->pv_recv_next = NULL; p_recv_self->i_recvstatus_id = -1; - p_recv_self->i_fds_id = -1; + p_recv_self->i_fds_id = -1; */ + + Drd64_Server_RecvStatus_FreeRecvStatus( p_recv_self ); + + return 0x00; +} + + +EXTERN_SERVER_RECVSTATUS +int + Drd64_Server_RecvStatus_AddSocketsChain( + Drd64_Server_RecvStatus *p_recv ) +{ + Drd64_Server_RecvStatus *p_before; + + if( NULL == p_recv ) { return 0x01; } + p_before = gp_recv_sockets_end; + + p_recv->pv_recv_before = (void *)p_before; + if( NULL != p_before ) + { p_before->pv_recv_next = (void *)p_recv; } + else + { gp_recv_sockets_start = p_recv; } + + gp_recv_sockets_end = p_recv; + + return 0x00; +} + + +EXTERN_SERVER_RECVSTATUS +int + Drd64_Server_RecvStatus_DeleteSocketsChain( + Drd64_Server_RecvStatus *p_recv ) +{ + Drd64_Server_RecvStatus *p_before; + Drd64_Server_RecvStatus *p_next; + + if( NULL != p_recv ) { return -1; } + + p_before = (Drd64_Server_RecvStatus *)p_recv->pv_recv_before; + p_next = (Drd64_Server_RecvStatus *)p_recv->pv_recv_next; + + if( NULL != p_before ) + { p_before->pv_recv_next = (void *)p_next; } + if( NULL != p_next ) + { p_next->pv_recv_before = (void *)p_before; } + + if( p_recv == gp_recv_sockets_start ) + { gp_recv_sockets_start = p_next; } + if( p_recv == gp_recv_sockets_end ) + { gp_recv_sockets_end = p_before; } + return 0x00; } @@ -378,6 +453,8 @@ void p_recv->b_recv_status = DRD64_SERVER_RECVSTATUS_STATUS_READ; p_recv->i_remain_bytes = sizeof( Drd64_PacketHeader ); p_recv->pv_resume = p_recv->pv_buf; + p_recv->pv_recv_before = NULL; + p_recv->pv_recv_next = NULL; return; } @@ -462,10 +539,20 @@ int EXTERN_SERVER_RECVSTATUS Drd64_Server_RecvStatus * - Drd64_Server_RecvStatus_GetResumeStart( + Drd64_Server_RecvStatus_GetResumeChainStart( + void ) +{ + return gp_recv_resume_start; +} + + +EXTERN_SERVER_RECVSTATUS +Drd64_Server_RecvStatus * + Drd64_Server_RecvStatus_GetSocketsChainStart( void ) { return gp_recv_resume_start; } + /* EOF of drd64_.c ----------------------------------- */ diff --git a/deamon/drd64_server_recvstatus.h b/deamon/drd64_server_recvstatus.h index fc0e507..aa518d5 100644 --- a/deamon/drd64_server_recvstatus.h +++ b/deamon/drd64_server_recvstatus.h @@ -89,7 +89,7 @@ EXTERN_SERVER_RECVSTATUS EXTERN_SERVER_RECVSTATUS void - Drd64_Server_RecvStatus_FreeRecvStatus( + Drd64_Server_RecvStatus_CloseRecvStatus( int i_fds ); @@ -105,6 +105,17 @@ EXTERN_SERVER_RECVSTATUS int i_recv_id ); EXTERN_SERVER_RECVSTATUS + int + Drd64_Server_RecvStatus_AddSocketsChain( + Drd64_Server_RecvStatus *p_recv ); + +EXTERN_SERVER_RECVSTATUS + int + Drd64_Server_RecvStatus_DeleteSocketsChain( + Drd64_Server_RecvStatus *p_recv ); + + +EXTERN_SERVER_RECVSTATUS void Drd64_Server_RecvStatus_InitRecvStatus( Drd64_Server_RecvStatus *p_recv ); @@ -143,7 +154,7 @@ EXTERN_SERVER_RECVSTATUS EXTERN_SERVER_RECVSTATUS Drd64_Server_RecvStatus * - Drd64_Server_RecvStatus_GetResumeStart( + Drd64_Server_RecvStatus_GetResumeChainStart( void ); -- 2.11.0