Annotation of libwww/Library/src/HTSocket.c, revision 2.29

2.1       frystyk     1: /*                                                                  HTSocket.c
2.29    ! frystyk     2: **     LOAD A SOCKET
2.1       frystyk     3: **
                      4: **     (c) COPYRIGHT MIT 1995.
                      5: **     Please first read the full copyright statement in the file COPYRIGH.
2.29    ! frystyk     6: **     @(#) $Id: Date Author State $
2.1       frystyk     7: **
                      8: **
                      9: ** HISTORY:
2.29    ! frystyk    10: **     6 June 95  HFN  Written
2.1       frystyk    11: */
                     12: 
                     13: /* Library Include files */
2.25      frystyk    14: #include "sysdep.h"
2.1       frystyk    15: #include "HTUtils.h"
                     16: #include "HTString.h"
2.7       frystyk    17: #include "HTReqMan.h"
2.4       frystyk    18: #include "HTProt.h"
2.29    ! frystyk    19: #include "HTIOStream.h"
        !            20: #include "HTChannl.h"
2.6       frystyk    21: #include "HTAlert.h"
2.1       frystyk    22: #include "HTFormat.h"
2.8       frystyk    23: #include "HTNetMan.h"
2.1       frystyk    24: #include "HTError.h"
                     25: #include "HTSocket.h"                                   /* Implemented here */
                     26: 
                     27: struct _HTStream {
2.25      frystyk    28:     const HTStreamClass *      isa;
2.1       frystyk    29: };
                     30: 
                     31: /* ------------------------------------------------------------------------- */
2.27      frystyk    32: 
2.17      frystyk    33: /*     HTLoadSocket
                     34: **     ------------
                     35: **     Given an open socket, this routine loads what ever is on the socket
                     36: **
                     37: ** On entry,
                     38: **      request                This is the request structure
                     39: ** On Exit
                     40: **     returns         HT_ERROR        Error has occured in call back
                     41: **                     HT_OK           Call back was OK
                     42: */
                     43: PUBLIC int HTLoadSocket (SOCKET soc, HTRequest * request, SockOps ops)
                     44: {
2.18      frystyk    45:     HTNet * net = NULL;
                     46:     if (!request) return HT_ERROR;
2.17      frystyk    47:     if (ops == FD_NONE) {
2.18      frystyk    48:        HTNet * me;
2.17      frystyk    49:        if (soc==INVSOC) {
2.24      eric       50:            if (PROT_TRACE) HTTrace("Load Socket. invalid socket\n");
2.17      frystyk    51:            return HT_ERROR;
                     52:        }
2.24      eric       53:        if (PROT_TRACE) HTTrace("Load Socket. Loading socket %d\n",soc);
2.18      frystyk    54:        me = HTNet_new(request, soc);
                     55:        me->sockfd = soc;
2.29    ! frystyk    56: #if 0
2.18      frystyk    57:        me->target = request->output_stream;
2.29    ! frystyk    58:        HTChannel_new(net, HT_CH_UNBUFFERED, 0, NO);
        !            59: #endif
2.18      frystyk    60:        net = me;
2.17      frystyk    61:     } else if (ops == FD_CLOSE) {                            /* Interrupted */
                     62:        HTNet_delete(request->net, HT_INTERRUPTED);
                     63:        return HT_OK;
2.18      frystyk    64:     } else
                     65:        net = request->net;
                     66:     if (!net) {
2.24      eric       67:        if (PROT_TRACE) HTTrace("Load Socket. invalid argument\n");
2.18      frystyk    68:        return HT_ERROR;
2.17      frystyk    69:     }
                     70: 
                     71:     /* In this load function we only have one state: READ */
                     72:     {
2.29    ! frystyk    73: #if 0
2.27      frystyk    74:        int status = HTChannel_readSocket(request, net);
2.17      frystyk    75:        if (status == HT_WOULD_BLOCK)
                     76:            return HT_OK;
2.22      frystyk    77:        else if (status == HT_CLOSED)
2.17      frystyk    78:            HTNet_delete(request->net, HT_LOADED);
                     79:        else
                     80:            HTNet_delete(request->net, HT_ERROR);
2.29    ! frystyk    81: #endif
2.17      frystyk    82:     }
                     83:     return HT_OK;
                     84: }
2.27      frystyk    85: 

Webmaster