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