{
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;
}
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 ) {
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;
{
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;
}
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 ) {
p_recv = (Drd64_Server_RecvStatus *)p_recv->pv_recv_next;
}
else {
- p_recv = Drd64_Server_RecvStatus_GetResumeStart();
+ p_recv = Drd64_Server_RecvStatus_GetResumeChainStart();
}
}
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
gp_recv_resume_start = NULL;
gi_recv_resume_max = FD_SETSIZE;
+ gp_recv_sockets_start = NULL;
+ gp_recv_sockets_end = NULL;
+
return 0x00;
}
}
-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;
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;
}
*(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;
}
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;
}
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 ----------------------------------- */