Changeset 151 in libcf for trunk/test/socket.c


Ignore:
Timestamp:
10/31/13 10:17:24 (11 years ago)
Author:
cheese
Message:

#1 fix interface and add util module

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/test/socket.c

    r122 r151  
    88#include <string.h>
    99
    10 #define LOG_SOCKET      0
    11 #define THREAD_POOL     1
     10#define THREAD_POOL     2
    1211#define PORT            1234
    13 
    14 int socket_echo_server (void * arg)
     12#define COUNT           2
     13
     14cf_ctx gLog;
     15
     16int server_worker (void * arg)
    1517{
    16     int srvsock = *((int *)arg);
    17     int clntsock = 0;
     18    cf_ctx srvsock = (cf_ctx)arg;
     19    cf_ctx clntsock = NULL;
     20    int result = 0;
    1821    int recvd = 0;
    1922    char buf[1024] = {0x00,};
     
    2124
    2225    /*------------------------------------------------------------*/
    23     clntsock = CF_Socket_Accept (srvsock);
    24     if (clntsock < 0)
     26    result = CF_Socket_Accept (srvsock, &clntsock);
     27    if (result < 0)
    2528    {
    2629        CF_DEBUG_PRINT (stderr, "failed to accept on server\n");
    2730        return -1;
    2831    }
    29     CF_Log_Write (LOG_SOCKET, "SERVER", "accepted\n");
    30 
    31     for (i = 0 ; i < 5 ; i++)
     32    CF_Log_Write (gLog, "SERVER", "accepted\n");
     33
     34    for (i = 0 ; i < COUNT ; i++)
    3235    {
    3336        if ((recvd = CF_Socket_Recv (clntsock, buf, sizeof (buf))) < 0)
     
    3639            return -2;
    3740        }
    38         CF_Log_Write (LOG_SOCKET, "SERVER", "recv {%s}\n", buf);
    39         CF_DEBUG_PRINT (stderr, "[SERVER] recv {%s}\n", buf);
     41        CF_Log_Write (gLog, "SERVER", "recv {%s}\n", buf);
     42        CF_DEBUG_PRINT (stderr, "recv {%s}\n", buf);
    4043
    4144        if (CF_Socket_Send (clntsock, buf, (size_t)recvd) < 0)
     
    4346            return -3;
    4447        }
    45         CF_Log_Write (LOG_SOCKET, "SERVER", "resp {%s}\n", buf);
    46         CF_DEBUG_PRINT (stderr, "[SERVER] resp {%s}\n", buf);
     48        CF_Log_Write (gLog, "SERVER", "resp {%s}\n", buf);
     49        CF_DEBUG_PRINT (stderr, "resp {%s}\n", buf);
    4750    }
    4851
     
    5356}
    5457
    55 int socket_echo_client (void * arg)
     58int client_worker (void * arg)
    5659{
    57     int sock = 0;
     60    cf_ctx sock = NULL;
     61    int result = 0;
    5862    int recvd = 0;
    5963    char buf[1024] = {0x00,};
     
    6367
    6468    /*------------------------------------------------------------*/
    65     sock = CF_Socket_Connect ("localhost", PORT);
    66     if (sock < 0)
     69    result = CF_Socket_Create (&sock);
     70    if (result < 0)
     71    {
     72        CF_DEBUG_PRINT (stderr, "failed to create\n");
     73        return -1;
     74    }
     75
     76    result = CF_Socket_Connect (sock, "localhost", PORT);
     77    if (result < 0)
    6778    {
    6879        CF_DEBUG_PRINT (stderr, "failed to connect on client\n");
    69         return -1;
    70     }
    71     CF_Log_Write (LOG_SOCKET, "CLIENT", "connected\n");
    72 
    73     for (i = 0 ; i < 5 ; i++)
     80        return -2;
     81    }
     82    CF_Log_Write (gLog, "CLIENT", "connected\n");
     83
     84    for (i = 0 ; i < COUNT ; i++)
    7485    {
    7586        if (CF_Socket_Send (sock, buf, sizeof (buf)) < 0)
    7687        {
    7788            CF_DEBUG_PRINT (stderr, "failed to send on client %d\n", errno);
    78             return -2;
    79         }
    80         CF_Log_Write (LOG_SOCKET, "CLIENT", "sent {%s}\n", buf);
    81         CF_DEBUG_PRINT (stderr, "[CLIENT] sent {%s}\n", buf);
     89            return -3;
     90        }
     91        CF_Log_Write (gLog, "CLIENT", "sent {%s}\n", buf);
     92        CF_DEBUG_PRINT (stderr, "sent {%s}\n", buf);
    8293
    8394        memset (buf, 0x00, sizeof (buf));
     
    8697        {
    8798            CF_DEBUG_PRINT (stderr, "failed to recv on client\n");
    88             return -3;
    89         }
    90         CF_Log_Write (LOG_SOCKET, "CLIENT", "recv {%s}\n", buf);
    91         CF_DEBUG_PRINT (stderr, "[CLIENT] recv {%s}\n", buf);
     99            return -4;
     100        }
     101        CF_Log_Write (gLog, "CLIENT", "recv {%s}\n", buf);
     102        CF_DEBUG_PRINT (stderr, "recv {%s}\n", buf);
    92103    }
    93104
     
    100111int main ()
    101112{
    102     CF_Thread_Ctx stid[THREAD_POOL];
    103     CF_Thread_Ctx ctid[THREAD_POOL];
    104 
    105     int sock = 0;
     113    cf_ctx stid[THREAD_POOL];
     114    cf_ctx ctid[THREAD_POOL];
     115
     116    char ip[256] = {0x00,};
     117    unsigned short port = 0;
     118    cf_ctx sock = 0;
     119    int result = 0;
    106120    int iter = 0;
    107121
    108122    /*------------------------------------------------------------*/
    109     if (CF_Log_Initialize (1) < 0)
    110     {
    111         fprintf (stderr, "failed to init. log\n");
     123    if (CF_Log_Create (&gLog, "socket.txt", CF_LOG_DEFAULT_BUFFER) < 0)
     124        CF_DEBUG_PRINT (stderr, "failed to open log\n");
     125
     126    CF_Log_Write (gLog, "LOG_MULTITHREAD", "multi-threaded logging test with socket\n");
     127
     128    if (CF_Socket_Initialize () < 0)
     129    {
     130        CF_DEBUG_PRINT (stderr, "failed to initialize socket\n");
    112131        return -1;
    113132    }
    114 
    115     if (CF_Log_Open (LOG_SOCKET, "socket.txt", CF_LOG_DEFAULT_BUFFER) < 0)
    116         CF_DEBUG_PRINT (stderr, "failed to open log\n");
    117 
    118     CF_Log_Write (LOG_SOCKET, "LOG_MULTITHREAD", "multi-threaded logging test with socket\n");
    119 
    120     if (CF_Socket_Initialize () < 0)
    121     {
    122         CF_DEBUG_PRINT (stderr, "failed to initialize socket\n");
     133    CF_Log_Write (gLog, "SOCKET", "socket initialized\n");
     134
     135    result = CF_Socket_Create (&sock);
     136    if (result < 0)
     137    {
     138        CF_DEBUG_PRINT (stderr, "failed to create\n");
    123139        return -2;
    124140    }
    125     CF_Log_Write (LOG_SOCKET, "SOCKET", "socket initialized\n");
    126 
    127     sock = CF_Socket_Server (PORT, 5);
     141
     142    result = CF_Socket_Server (sock, PORT, 5);
    128143    if (sock < 0)
    129144    {
     
    131146        return -3;
    132147    }
    133     CF_Log_Write (LOG_SOCKET, "SOCKET", "socket ready\n");
    134 
    135     for (iter = 0 ; iter < THREAD_POOL ; iter++)
    136     {
    137         if (CF_Thread_CreateCtx (&stid[iter], socket_echo_server, &sock) < 0)
     148    CF_Socket_GetIP (sock, ip);
     149    CF_Socket_GetPort (sock, &port);
     150    CF_Log_Write (gLog, "SOCKET", "socket ready [%s:%d]\n", ip, port);
     151    CF_DEBUG_PRINT (stderr, "socket ready [%s:%d]\n", ip, port);
     152 
     153
     154    for (iter = 0 ; iter < THREAD_POOL ; iter++)
     155    {
     156        if (CF_Thread_Create (&stid[iter], server_worker, sock) < 0)
    138157        {
    139158            CF_DEBUG_PRINT (stderr, "failed to create %dth thread\n", iter);
    140159            return -4;
    141160        }
    142         CF_Log_Write (LOG_SOCKET, "SOCKET", "create server thread-%d\n", iter);
    143     }
    144 
    145     for (iter = 0 ; iter < THREAD_POOL ; iter++)
    146     {
    147         if (CF_Thread_CreateCtx (&ctid[iter], socket_echo_client, &sock) < 0)
     161        CF_Log_Write (gLog, "SOCKET", "create server thread-%d\n", iter);
     162    }
     163
     164    for (iter = 0 ; iter < THREAD_POOL ; iter++)
     165    {
     166        if (CF_Thread_Create (&ctid[iter], client_worker, &sock) < 0)
    148167        {
    149168            CF_DEBUG_PRINT (stderr, "failed to create %dth thread\n", iter);
    150169            return -5;
    151170        }
    152         CF_Log_Write (LOG_SOCKET, "SOCKET", "create client thread-%d\n", iter);
     171        CF_Log_Write (gLog, "SOCKET", "create client thread-%d\n", iter);
    153172    }
    154173
     
    174193    {
    175194        CF_Thread_Join (ctid[iter]);
    176         CF_Thread_DestroyCtx (ctid[iter]);
     195        CF_Thread_Destroy (ctid[iter]);
    177196
    178197        CF_Thread_Join (stid[iter]);
    179         CF_Thread_DestroyCtx (stid[iter]);
    180 
    181         CF_Log_Write (LOG_SOCKET, "SOCKET", "join server thread-%d\n", iter);
     198        CF_Thread_Destroy (stid[iter]);
     199
     200        CF_Log_Write (gLog, "SOCKET", "join server thread-%d\n", iter);
    182201    }
    183202
     
    186205    CF_Socket_Finalize ();
    187206
    188     CF_Log_Close (LOG_SOCKET);
    189 
    190     CF_Log_Finalize ();
     207    CF_Log_Destroy (gLog);
    191208    /*------------------------------------------------------------*/
    192209
Note: See TracChangeset for help on using the changeset viewer.