OSDN Git Service

*** empty log message ***
authorkoinec <>
Sat, 20 Jun 2009 10:38:16 +0000 (10:38 +0000)
committerkoinec <>
Sat, 20 Jun 2009 10:38:16 +0000 (10:38 +0000)
deamon/drd64_marshald_cinfo.h
deamon/drd64_marshald_cmd_attach_request.c
deamon/drd64_marshald_dispatch.c
deamon/drd64_marshald_send_connect.c
deamon/drd64_server_recvstatus.h

index 90cd805..d6d8582 100644 (file)
@@ -43,6 +43,10 @@ Comment:
 #define        DRD64_MARSHALD_CINFOTYPE_DEBUG          0x02
 #define        DRD64_MARSHALD_CINFOTYPE_CLIENT         0x03
 
+#define        DRD64_MARSHALD_CINFOSTATUS_READ         0x00
+#define        DRD64_MARSHALD_CINFOSTATUS_CONNECT      0x01
+#define        DRD64_MARSHALD_CINFOSTATUS_POLL         0x02
+
 
 typedef        struct  {
 
@@ -50,6 +54,7 @@ typedef       struct  {
        int             i_cinfo_id;
        Byte    b_cinfo_type;
        int             i_cinfo_refcount;
+       Byte    b_cinfo_status;
        
        /* Section 2 : Connection Info. ==============*/
        /* Destination Info. */
index 8d79551..0568e96 100644 (file)
@@ -37,7 +37,17 @@ Comment:
 #include"drd64_marshald.h"
 
 int
-       Drd64_Marshald_Cmd_AttachRequest_toINet(
+       Drd64_Marshald_Cmd_AttachRequest_toINet_Result(
+               int             i_fds,
+               Drd64_PacketHeader      *p_phead,
+               Drd64_PacketData_AttachRequest  *p_attachreq,
+               Drd64_Marshald_MasterInformation        *p_marshald )
+{
+}
+
+
+int
+       Drd64_Marshald_Cmd_AttachRequest_toINet_Request(
                int             i_fds,
                Drd64_PacketHeader      *p_phead,
                Drd64_PacketData_AttachRequest  *p_attachreq,
@@ -45,15 +55,48 @@ int
 {
        int             i_err;
        Drd64_Marshald_ConnectInfo      *p_cinfo;
+       Drd64_Marshald_ConnectInfo      *p_cinfo_self;
+       Drd64_Marshald_ConnectInfo      *p_cinfo_inet;
 
        /* Phase 0 : Init ----------------------------*/
-       /* Phase 1 : Connect INet-Marshald -----------*/
+       p_cinfo_self    = Drd64_Marshald_GetConnectInfo( i_fds );
+       assert( NULL != p_cinfo_self );
+
+       p_cinfo_inet = Drd64_Marshald_SendCmd_Connect( &(p_attachreq->t_prog_addr) );
+       if( NULL == p_cinfo_inet )      {
+               p_cinfo_self->b_cinfo_status
+                               = DRD64_MARSHALD_CINFOSTATUS_CONNECT;
+               return 0x00;
+       }
+
+
+       if( DRD64_MARSHALD_CINFOSTATUS_READ == p_cinfo_self )   {
+               /* */
+
+               p_cinfo_inet    = Drd64_Marshald_SearchINetConnection(
+                                                                       &(p_attachreq->t_prog_addr) );
+               if( NULL != p_cinfo_inet )      {
+                       p_cinfo_self->b_cinfo_status
+                                       = DRD64_MARSHALD_CINFOSTATUS_POLL;
+               }
+               else    {
+                       p_cinfo_self->b_cinfo_status
+                                       = DRD64_MARSHALD_CINFOSTATUS_CONNECT;
+                       p_cinfo = Drd64_Marshald_SendCmd_Connect( &(p_attachreq->t_prog_addr) );
+                       if( NULL == p_cinfo )   {
+                               return 0x01;
+                       }
+                       puts("connected");
 
-       p_cinfo = Drd64_Marshald_SendCmd_Connect( &(p_attachreq->t_prog_addr) );
-       if( NULL == p_cinfo )   {
-               return 0x01;
+               }
+       }
+       else if( DRD64_MARSHALD_CINFOSTATUS_CONNECT == p_cinfo_self )   {
+       }
+       else if( DRD64_MARSHALD_CINFOSTATUS_POLL == p_cinfo_self )      {
        }
-       puts("connected");
+       
+       /* Phase 1 : Connect INet-Marshald -----------*/
+
 
        /* Phase 2 : Transport Attach-Request Packet -*/
        p_phead->w_packettype   = DRD64_PACKETTYPE_TRANSPORT;
@@ -209,7 +252,7 @@ int
                /* Local => INet marshald */
                else    {
                        puts("Attach to INet");
-                       Drd64_Marshald_Cmd_AttachRequest_toINet(
+                       Drd64_Marshald_Cmd_AttachRequest_toINet_Request(
                                                i_fds, p_phead, p_attachreq, p_marshald );
                }
        }
index 0b59876..39c1109 100644 (file)
@@ -36,9 +36,20 @@ Comment:
 
 #include"drd64_marshald.h"
 
+static fd_set  fds_orig;
+
+
+void
+       Drd64_Marshald_Dispatch_SetFD(
+               int     i_fds )
+{
+       FD_SET( i_fds, &fds_orig );
+       return;
+}
+
 
 int
-       Drd64_Marshald_Dispatch_Packet(
+       Drd64_Marshald_Dispatch_JudgePacket(
                int             i_fds,
                int             i_remainbytes,
         Drd64_Marshald_MasterInformation *p_marshald )
@@ -134,7 +145,7 @@ int
     Drd64_Marshald_Dispatch_Polling(
         Drd64_Marshald_MasterInformation *p_marshald )
 {
-       fd_set  fds_orig;
+//     fd_set  fds_orig;
        fd_set  fds_now;
        int     i_cnt;
        int             i_result;
@@ -175,8 +186,9 @@ int
                        printf("new: %d %d\n", i_socket_new, errno );
 
                        if( -1 != i_socket_new )    {
-                               if( i_socket_new >= i_selects_max )
-                                       { i_selects_max = i_socket_new + 1; }
+                               if( i_socket_new >= i_selects_max )                     /* XXX */
+                                       { i_selects_max = i_socket_new + 1; }   /* XXX */
+
                                FD_SET( i_socket_new, &fds_orig );
 
                                p_recv = Drd64_Server_RecvStatus_AllocRecvStatus(
@@ -214,7 +226,7 @@ int
 
                                        printf("read err: [%d]%d %d pid = %d\n", i_cnt, i_err, errno,i_pid );
                                        /* Judge Packet */
-                                       i_result = Drd64_Marshald_Dispatch_Packet(
+                                       i_result = Drd64_Marshald_Dispatch_JudgePacket(
                                                                i_cnt, i_err, &drd64_marshald_info );
 
                                        /* 0x00 = Judge 1 : Disconnect ( Others Packet ) */
index 31b4426..58eb266 100644 (file)
@@ -47,6 +47,8 @@ Drd64_Marshald_ConnectInfo *
        Drd64_PacketHeader                      *p_phead;
        Drd64_PacketData_Connect        *p_connect;
        Drd64_Marshald_ConnectInfo      *p_cinfo;
+       Drd64_Server_RecvStatus         *p_recv;
+
 
        /* Phase 1 : Check Exist Same-Connection */
        p_cinfo = Drd64_Marshald_SearchINetConnection( &p_addr_dest );
@@ -88,7 +90,24 @@ Drd64_Marshald_ConnectInfo *
                Drd64_Server_Socket_InitSocketClient_INet(
                                                p_addr_dest, DRD64_SOCKET_NETWORK_PORT ); 
 
+       p_recv = Drd64_Server_RecvStatus_AllocRecvStatus(
+                                       i_socket_inet, DRD64_MARSHALD_RECVSTATUS_UNITS );
+       if( NULL == p_recv )    { return 0x02; }
+
        /* Phase 4 : Send Packet to INet Marshald -----*/
+       i_wlen  = send( i_socket_inet, (void *)p_phead,
+                                                               DRD64_PacketSize(p_phead), 0x00 );
+       if( i_wlen != DRD64_PacketSize(p_phead) )       {
+               return 0x01; 
+       } 
+
+       Drd64_Marshald_Dispatch_SetFD( i_socket_inet );
+
+       p_recv->i_read_phase = DRD64_SERVER_RECVSTATUS_PHASE_HEADER;
+       p_recv->i_remain_bytes  = sizeof( Drd64_PacketHeader );
+       p_recv->pv_resume       = p_recv->pv_buf;
+
+       /*
        i_err   = Drd64_Server_Packet_SendPacket(
                                        i_socket_inet, (void *)p_phead,
                                        sizeof( Drd64_PacketData_Connect ), 
@@ -96,7 +115,6 @@ Drd64_Marshald_ConnectInfo *
        if( 0 > i_err ) { return NULL; }
 
 
-       /* Phase 5 : Set ConnectInfo Data -------------*/
        p_cinfo->b_cinfo_type                   = DRD64_MARSHALD_CINFOTYPE_CLIENT;
        p_cinfo->i_cinfo_refcount               = 1;
 
@@ -113,8 +131,8 @@ Drd64_Marshald_ConnectInfo *
        i_err   = Drd64_Server_INetAddr_SetInAddr_LocalHost(
                                                                &(p_cinfo->t_client_addr_inet) );
        p_cinfo->i_client_pid                   = getpid();
-
-       return p_cinfo;
+       */
+       return NULL;
 }
 
 
index 95f461f..e73643c 100644 (file)
@@ -50,6 +50,9 @@ typedef struct {
        void    *pv_resume;
        int             i_remain_bytes;
        int             i_read_phase;
+
+       int             i_dest_fds_id;
+       int             i_src_fds_id;
 } Drd64_Server_RecvStatus;
 
 #ifdef DRD64_SRC_SERVER_RECVSTATUS