Annotation of libwww/Library/src/HTReqMan.html, revision 2.37
2.1 frystyk 1: <HTML>
2: <HEAD>
2.32 frystyk 3: <!-- Changed by: Henrik Frystyk Nielsen, 15-Jul-1996 -->
2.37 ! frystyk 4: <TITLE>W3C Sample Code Library libwww Private Request Definition</TITLE>
2.1 frystyk 5: </HEAD>
6: <BODY>
2.23 frystyk 7: <H1>
8: Private Request Definition
9: </H1>
2.1 frystyk 10: <PRE>
11: /*
12: ** (c) COPYRIGHT MIT 1995.
13: ** Please first read the full copyright statement in the file COPYRIGH.
14: */
15: </PRE>
2.23 frystyk 16: <P>
17: This module is the private part of the request object. It has the functions
18: declarations that are private to the Library and that shouldn't be used by
19: applications. The module has been separated from the old HTAccess module.
20: See also the public part of the declarition in the <A HREF="HTReq.html">HTReq
21: Module</A>.
22: <P>
23: This module is implemented by <A HREF="HTReqMan.c">HTReqMan.c</A>, and it
2.37 ! frystyk 24: is a part of the <A HREF="http://www.w3.org/pub/WWW/Library/"> W3C Sample Code
2.23 frystyk 25: Library</A>.
2.1 frystyk 26: <PRE>
27: #ifndef HTREQMAN_H
28: #define HTREQMAN_H
29:
30: #include "<A HREF="HTReq.html">HTReq.h</A>"
31: #include "<A HREF="HTList.html">HTList.h</A>"
32: #include "<A HREF="HTFormat.html">HTFormat.h</A>"
33: #include "<A HREF="HTAnchor.html">HTAnchor.h</A>"
34: #include "<A HREF="HTMethod.html">HTMethod.h</A>"
35: #include "<A HREF="HTAABrow.html">HTAABrow.h</A>"
36: #include "<A HREF="HTStream.html">HTStream.h</A>"
37: #include "<A HREF="HTNet.html">HTNet.h</A>"
2.25 eric 38: #include "<A HREF="HTMIMPrs.html">HTMIMPrs.h</A>"
2.1 frystyk 39: </PRE>
2.23 frystyk 40: <P>
41: When a request is handled, all kinds of things about it need to be passed
42: along together with a request. It is intended to live as long as the request
43: is still active, but can be deleted as soon as it has terminated. Only the
44: anchor object stays around after the request itself is terminated.
2.1 frystyk 45: <PRE>
46: struct _HTRequest {
2.14 frystyk 47:
48: BOOL internal; /* Does the app knows about this one? */
49:
2.33 frystyk 50: time_t date; /* Time stamp when the request was issued */
51:
2.1 frystyk 52: HTMethod method;
53:
2.36 frystyk 54: BOOL flush; /* Should we flush immediately */
55:
2.5 frystyk 56: HTPriority priority; /* Priority for this request */
2.1 frystyk 57: </PRE>
2.23 frystyk 58: <H3>
59: User Profile
60: </H3>
61: <P>
62: Each request can be assigned a <A HREF="HTUser.html">user profile</A> containing
63: information about this host and the user issuing the request.
64: <PRE>
65: HTUserProfile * userprofile;
66: </PRE>
2.35 frystyk 67:
68: <H3>
69: Net Object
70: </H3>
71: Each request is assigned a Net object which contains pointers to other objects handling the request.
72: <PRE>
73: HTNet * net; /* Information about socket etc. */
74: </PRE>
75:
76: <H3>
77: Response Object
78: </H3>
79:
80: When we start getting MIME headers in as a response we keep it in this object until we know what to do with it.
81:
82: <PRE>
83: HTResponse * response;
84: </PRE>
85:
86: <H3>
87: Error Manager
88: </H3>
89: <PRE>
90: HTList * error_stack; /* List of errors */
91: </PRE>
92:
93: <H3>
94: Have many times do We Want to Try?
95: </H3>
96:
97: <PRE>
98: int retrys; /* Number of automatic reloads */
99: int max_forwards;
100: </PRE>
101:
102: <H3>
103: Preemtive or Non-Preemptive load?
104: </H3>
105:
106: Each protocol module is registered with a default behavior but if you have registered a protocol module for non-preemtive load you can override this by using the following flag.
107:
108: <PRE>
109: BOOL preemptive;
110: </PRE>
111:
112: <H3>
113: Content Negotiation
114: </H3>
115:
116: Normally, when we access the local file system we do content negotiation in order to find the most suited representation. However, you can turn this off by using the following flag.
117:
118: <PRE>
119: BOOL ContentNegotiation;
120: </PRE>
121:
122: <H3>
123: Headers and header information
124: </H3>
125:
126: These are the masks that decides what headers to send.
127:
128: <PRE>
129: HTGnHd GenMask;
130: HTRsHd ResponseMask;
131: HTRqHd RequestMask;
132: HTEnHd EntityMask;
133:
134: HTList * generators;
135: BOOL gens_local;
136: </PRE>
137:
138: <H3>
139: Local MIME Header Parsers
140: </H3>
141:
142: Each request can be assigned its own MIME header parsers.
143:
144: <PRE>
145: HTMIMEParseSet * parseSet;
146: BOOL pars_local;
147: </PRE>
148:
2.23 frystyk 149: <H3>
150: Accept headers
151: </H3>
2.35 frystyk 152:
153: These are the accept headers that we want to send out.
154:
2.1 frystyk 155: <PRE>
156: HTList * conversions;
157: BOOL conv_local;
158:
159: HTList * encodings;
160: BOOL enc_local;
161:
2.22 frystyk 162: HTList * ctes;
163: BOOL cte_local;
2.21 frystyk 164:
2.1 frystyk 165: HTList * languages;
166: BOOL lang_local;
167:
168: HTList * charsets;
169: BOOL char_local;
2.20 hallam 170:
171: HTList * befores;
172: BOOL befores_local;
173:
174: HTList * afters;
175: BOOL afters_local;
2.1 frystyk 176: </PRE>
2.35 frystyk 177:
178: <H3>
179: Are we using a Proxy?
180: </H3>
181:
182: If so then we keep the name in this variable
183:
184: <PRE>
185: char * proxy;
186: BOOL full_uri;
187: </PRE>
188:
189: <H3>
190: Cache Control Directives
191: </H3>
192: <P>
193: This association list is a list of the cache control directives that are
194: to be sent as part of the <CODE>Cache-Control</CODE> header.
195: <PRE>
196: HTReload reload;
197: HTAssocList * cache_control;
198: </PRE>
199:
2.23 frystyk 200: <H3>
2.35 frystyk 201: Byte Ranges
202: </H3>
203:
204: This association list is a list of the cache control directives that are
205: to be sent as part of the <CODE>Range</CODE> header.
206:
207: <PRE>
208: HTAssocList * byte_ranges;
209: </PRE>
210:
211: <H3>
212: Connection Control Directives
213: </H3>
214: <P>
215: This association list is a list of the connection control directives that
216: are to be sent as part of the <CODE>Connection</CODE> header.
217:
218: <PRE>
219: HTAssocList * connection;
220: </PRE>
221: <H3>
222: Access Authentication Information
2.23 frystyk 223: </H3>
2.35 frystyk 224: <P>
225: The <CODE>credentials</CODE> list contains the information that we are to send as part of the <CODE>Authorization</CODE> header. The realm is if we already know that we need to generate credentials for a specific realm.
2.1 frystyk 226: <PRE>
2.35 frystyk 227: char * realm; /* Current realm */
228: HTAssocList * credentials; /* Credentials received by server */
229: </PRE>
230: <H3>
231: Protocol Extension Protocol (PEP) Information
232: </H3>
2.5 frystyk 233:
2.35 frystyk 234: These association lists contain the information that we are to send as PEP headers in the request.
2.5 frystyk 235:
2.35 frystyk 236: <PRE>
237: HTAssocList * protocol;
238: HTAssocList * protocol_info;
239: HTAssocList * protocol_request;
2.1 frystyk 240: </PRE>
2.35 frystyk 241:
2.23 frystyk 242: <H3>
243: Anchors
244: </H3>
2.1 frystyk 245: <PRE>
2.10 frystyk 246: HTParentAnchor * anchor; /* The Client anchor for this request */
247:
2.1 frystyk 248: HTChildAnchor * childAnchor; /* For element within the object */
249: HTParentAnchor * parentAnchor; /* For referer field */
250: </PRE>
2.23 frystyk 251: <H3>
252: Streams From Network to Application
253: </H3>
2.1 frystyk 254: <PRE>
255: HTStream * output_stream;
256: HTFormat output_format;
2.26 frystyk 257: BOOL connected;
2.1 frystyk 258:
259: HTStream* debug_stream;
260: HTFormat debug_format;
261: </PRE>
2.23 frystyk 262: <H3>
263: Streams From Application to Network
264: </H3>
2.1 frystyk 265: <PRE>
266: HTStream * input_stream;
267: HTFormat input_format;
268: </PRE>
2.23 frystyk 269: <H3>
270: Callback Function for getting data down the Input Stream
271: </H3>
2.1 frystyk 272: <PRE>
2.5 frystyk 273: HTPostCallback * PostCallback;
2.1 frystyk 274: </PRE>
2.23 frystyk 275: <H3>
276: Context Swapping
277: </H3>
2.1 frystyk 278: <PRE>
279: HTRequestCallback * callback;
280: void * context;
281: </PRE>
2.23 frystyk 282: <H3>
283: PostWeb Information
284: </H3>
2.1 frystyk 285: <PRE>
286: HTRequest * source; /* Source for request or itself */
2.16 frystyk 287: HTParentAnchor * source_anchor; /* Source anchor or itself */
288:
2.1 frystyk 289: HTRequest * mainDestination; /* For the typical case */
290: HTList * destinations; /* List of related requests */
291: int destRequests; /* Number of destination requests */
292: int destStreams; /* Number of destination streams */
293: </PRE>
294: <PRE>
295: };
296: </PRE>
2.23 frystyk 297: <H2>
298: Post Web Management
299: </H2>
300: <P>
301: These functions are mainly used internally in the Library but there is no
302: reason for them not to be public.
2.1 frystyk 303: <PRE>
304: extern BOOL HTRequest_addDestination (HTRequest * src, HTRequest * dest);
305: extern BOOL HTRequest_removeDestination (HTRequest * dest);
2.14 frystyk 306: extern BOOL HTRequest_destinationsReady (HTRequest * me);
2.1 frystyk 307:
308: extern BOOL HTRequest_linkDestination (HTRequest * dest);
309: extern BOOL HTRequest_unlinkDestination (HTRequest * dest);
310:
311: extern BOOL HTRequest_removePostWeb (HTRequest * me);
312: extern BOOL HTRequest_killPostWeb (HTRequest * me);
313:
314: #define HTRequest_mainDestination(me) \
2.23 frystyk 315: ((me) && (me)->source ? (me)->source->mainDestination : NULL)
2.1 frystyk 316: #define HTRequest_isDestination(me) \
2.23 frystyk 317: ((me) && (me)->source && (me) != (me)->source)
2.1 frystyk 318: #define HTRequest_isMainDestination(me) \
2.23 frystyk 319: ((me) && (me)->source && \
320: (me) == (me)->source->mainDestination)
2.1 frystyk 321: #define HTRequest_isSource(me) \
2.23 frystyk 322: ((me) && (me)->source && (me) == (me)->source)
2.1 frystyk 323: </PRE>
2.23 frystyk 324: <P>
2.1 frystyk 325: End of Declaration
326: <PRE>
327: #endif /* HTREQMAN_H */
328: </PRE>
2.23 frystyk 329: <P>
330: <HR>
2.21 frystyk 331: <ADDRESS>
2.37 ! frystyk 332: @(#) $Id: HTReqMan.html,v 2.36 1996/12/03 14:49:12 frystyk Exp $
2.21 frystyk 333: </ADDRESS>
2.23 frystyk 334: </BODY></HTML>
Webmaster