/* ** (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"
#ifdef __cplusplus
extern "C" {
#endif
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);
#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)
#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)
#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)
#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)
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);
#ifdef __cplusplus } #endif #endif /* HTNETMAN_H */