Private Net Definition

/*
**	(c) COPYRIGHT MIT 1995.
**	Please first read the full copyright statement in the file COPYRIGH.
*/

This is the private definition of the Net Class. Please look in the public Net Class for more documentation

This module is implemented by HTNet.c, and it is a part of the W3C Sample Code Library.

#ifndef HTNETMAN_H
#define HTNETMAN_H
#include "HTNet.h"
#include "HTDNS.h"
#include "HTEvent.h"
#include "HTProt.h"

The HTNet object is the core of the request queue management. This object contains information about the socket descriptor, the input read buffer etc. required to identify and service a request.

struct _HTNet {
    int                 hash;                                  /* Hash value */

    /* Link to other objects */
    HTRequest *		request;		   /* Link to request object */
    HTHost *		host;	       /* What we know about the remote host */
    HTProtocol *	protocol;		 /* Protocol to this request */
    HTTransport *	transport;	       /* Transport for this request */
    int                 session;

    /* For progress notifications */
    BOOL		countRawBytes;	     /* If we should count raw bytes */
    long		bytesRead;			    /* Bytes in body */
    long		headerBytesRead;	     /* Bytes read in header */
    long		bytesWritten;		 /* Bytes written to network */
    long		headerBytesWritten;	  /* Bytes written in header */

#if 0
    int			retry;		     /* Counting attempts to connect */
    int 		home;			 /* Current home if multiple */
#endif

    time_t		connecttime;		 /* Used on multihomed hosts */
    BOOL		preemptive;  /* Eff result from Request and Protocol */

    HTEvent		event;
    HTStream *		readStream;    /* host's input stream puts data here */

    /* User specific stuff */
    void *		context;		/* Protocol Specific context */

    /* Eric's sleezoid cheat - should go to extra pipeline object */
    HTEventType		registeredFor;
};

extern SOCKET HTNet_socket(HTNet * me);

Bytes Read Stats

Total Bytes Read

#define HTNet_setBytesRead(me,l)	  ((me) ? (me->bytesRead=(l)) : -1)
#define HTNet_bytesRead(me)		  ((me) ? (me)->bytesRead : -1)
#define HTNet_addBytesRead(me,l)          ((me) ? (me->bytesRead+=(l)) : -1)

Header Bytes Read

#define HTNet_setHeaderBytesRead(me,l)	  ((me) ? (me->headerBytesRead=(l)) :-1)
#define HTNet_headerBytesRead(me)	  ((me) ? (me)->headerBytesRead : -1)
#define HTNet_addHeaderBytesRead(me,l)    ((me) ? (me->headerBytesRead+=(l)) : -1)

Bytes Written Stats

Total Bytes Written

#define HTNet_setBytesWritten(me,l)	  ((me) ? (me->bytesWritten=(l)) :-1)
#define HTNet_bytesWritten(me)		  ((me) ? (me)->bytesWritten : -1)
#define HTNet_addBytesWritten(me,l)       ((me) ? (me->bytesWritten+=(l)) : -1)

Header Bytes Written

#define HTNet_setHeaderBytesWritten(me,l) ((me) ? (me->headerBytesWritten=(l)) :-1)
#define HTNet_headerBytesWritten(me)  ((me) ? \
                                       ((me)->headerBytesWritten==0 ? \
                                        HTNet_bytesWritten(me) : \
                                        (me)->headerBytesWritten) : -1)
#define HTNet_addHeaderBytesWritten(me,l) ((me) ? (me->headerBytesWritten+=(l)) : -1)

Event Callbacks

extern BOOL HTNet_setEventParam(HTNet * net, void * eventParam);
extern void* HTNet_eventParam(HTNet * net);
extern BOOL HTNet_setEventCallback(HTNet * net, HTEventCallback * cbf);
extern HTEventCallback * HTNet_eventCallback(HTNet * net);
extern BOOL HTNet_setEventPriority(HTNet * net, HTPriority priority);
extern HTPriority HTNet_eventPriority(HTNet * net);
#endif /* HTNETMAN_H */


@(#) $Id: HTNetMan.html,v 2.25 1998/09/24 19:48:52 frystyk Exp $