OSDN Git Service

*** empty log message ***
authorkoinec <>
Sat, 12 Dec 2009 11:24:32 +0000 (11:24 +0000)
committerkoinec <>
Sat, 12 Dec 2009 11:24:32 +0000 (11:24 +0000)
deamon/drd64_debugd_dispatch.c
deamon/drd64_marshald_dispatch.c
deamon/drd64_server_recvstatus.c
deamon/drd64_server_recvstatus.h

index 00ab933..d13664c 100644 (file)
@@ -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;
index 3a58a08..047e231 100644 (file)
@@ -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();
                }
        }
 
index edff444..62752a2 100644 (file)
@@ -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 ----------------------------------- */
index fc0e507..aa518d5 100644 (file)
@@ -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 );