Annotation of libwww/Library/src/HTHstMan.html, revision 2.1
2.1 ! frystyk 1: <HTML>
! 2: <HEAD>
! 3: <!-- Changed by: Henrik Frystyk Nielsen, 19-May-1996 -->
! 4: <TITLE>W3C Reference Library libwww Private Hst Definition</TITLE>
! 5: </HEAD>
! 6: <BODY>
! 7: <H1>
! 8: Private Host Definition
! 9: </H1>
! 10: <PRE>
! 11: /*
! 12: ** (c) COPYRIGHT MIT 1995.
! 13: ** Please first read the full copyright statement in the file COPYRIGH.
! 14: */
! 15: </PRE>
! 16: <P>
! 17: This is the private definition of the Host Class. Please look in the public
! 18: <A HREF="HTHost.html">Host Class</A> for more documentation
! 19: <P>
! 20: This module is implemented by <A HREF="HTHost.c">HTHost.c</A>, and it is a
! 21: part of the <A HREF="http://www.w3.org/pub/WWW/Library/">W3C Reference
! 22: Library</A>.
! 23: <PRE>
! 24: #ifndef HTHSTMAN_H
! 25: #define HTHSTMAN_H
! 26: #include "HTHost.h"
! 27: #include "HTDNS.h"
! 28: #include "HTEvent.h"
! 29: #include "HTProt.h"
! 30:
! 31: #define PIPE_BUFFER_SIZE 8192
! 32: </PRE>
! 33: <P>
! 34: The <CODE>HTHost</CODE> object is the core of the request queue management.
! 35: This object contains information about the socket descriptor, the input read
! 36: buffer etc. required to identify and service a request.
! 37: <PRE>
! 38: typedef enum _TCPState {
! 39: TCP_ERROR = -2,
! 40: TCP_CONNECTED = -1,
! 41: TCP_BEGIN = 0,
! 42: TCP_CHANNEL,
! 43: TCP_DNS,
! 44: TCP_NEED_SOCKET,
! 45: TCP_NEED_BIND,
! 46: TCP_NEED_LISTEN,
! 47: TCP_NEED_CONNECT
! 48: } TCPState;
! 49:
! 50: struct _HTHost {
! 51: int hash;
! 52:
! 53: /* Information about the otherend */
! 54: char * hostname; /* name of host + optional port */
! 55: time_t ntime; /* Creation time */
! 56: char * type; /* Peer type */
! 57: int version; /* Peer version */
! 58: HTMethod methods; /* Public methods (bit-flag) */
! 59: char * server; /* Server name */
! 60: char * user_agent; /* User Agent */
! 61: char * range_units; /* ??? */
! 62:
! 63: /* When does this entry expire? */
! 64: time_t expires; /* Persistent channel expires time */
! 65:
! 66: /* Queuing and connection modes */
! 67: HTList * pipeline; /* Pipe line of net objects */
! 68: HTList * pending; /* List of pending Net objects */
! 69: BOOL persistent;
! 70: HTTransportMode mode; /* Supported mode */
! 71:
! 72: /* Support for transports */
! 73: HTChannel * channel; /* data channel */
! 74: FILE * fp; /* If we can't use a socket */
! 75:
! 76: /* Connection dependent stuff */
! 77: HTdns * dns; /* Link to DNS object */
! 78: TCPState tcpstate; /* State in connection */
! 79: SockA sock_addr; /* SockA is defined in sysdep.h */
! 80: int retry; /* Counting attempts to connect */
! 81: int home; /* Current home if multiple */
! 82: time_t connecttime; /* Used on multihomed hosts */
! 83:
! 84: /* Event Management */
! 85: HTEvent * events[2]; /* reading and writing may differ */
! 86: HTEventType registeredFor; /* Which actions are we blocked on */
! 87: size_t remainingRead; /* Tells HostEvent to call next net */
! 88:
! 89: /* User specific stuff */
! 90: void * context; /* Protocol Specific context */
! 91: int forceWriteFlush;
! 92: };
! 93:
! 94: #define HTHost_bytesRead(me) ((me) ? (me)->bytes_read : -1)
! 95: #define HTHost_bytesWritten(me) ((me) ? (me)->bytes_written : -1)
! 96:
! 97: #define HTHost_setBytesRead(me,l) ((me) ? (me->bytes_read=(l)) : -1)
! 98: #define HTHost_setBytesWritten(me,l) ((me) ? (me->bytes_written=(l)) :-1)
! 99: #define HTHost_setDNS (host, dns) ((me) ? (me->dns=(dns)) :-1)
! 100: </PRE>
! 101:
! 102: <PRE>
! 103: #endif /* HTHSTMAN_H */
! 104: </PRE>
! 105: <P>
! 106: <HR>
! 107: <ADDRESS>
! 108: @(#) $Id: HTHstMan.html,v 1.1.2.6 1996/11/18 05:00:59 eric Exp $
! 109: </ADDRESS>
! 110: </BODY></HTML>
Webmaster