Annotation of libwww/Library/src/HTReqMan.html, revision 2.41
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.39 frystyk 24: is a part of the <A HREF="http://www.w3.org/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;
2.41 ! kahan 100: int AAretrys; /* Number of authentication
! 101: retries */
2.35 frystyk 102: </PRE>
103:
104: <H3>
2.41 ! kahan 105: Preemptive or Non-Preemptive load?
2.35 frystyk 106: </H3>
107:
108: 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.
109:
110: <PRE>
111: BOOL preemptive;
112: </PRE>
113:
114: <H3>
115: Content Negotiation
116: </H3>
117:
118: 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.
119:
120: <PRE>
121: BOOL ContentNegotiation;
122: </PRE>
123:
124: <H3>
2.40 frystyk 125: Should we use preconditions?
126: </H3>
127: <PRE>
128: BOOL preconditions;
129: </PRE>
130:
131: <H3>
2.35 frystyk 132: Headers and header information
133: </H3>
134:
135: These are the masks that decides what headers to send.
136:
137: <PRE>
138: HTGnHd GenMask;
139: HTRsHd ResponseMask;
140: HTRqHd RequestMask;
141: HTEnHd EntityMask;
142:
143: HTList * generators;
144: BOOL gens_local;
145: </PRE>
146:
147: <H3>
148: Local MIME Header Parsers
149: </H3>
150:
151: Each request can be assigned its own MIME header parsers.
152:
153: <PRE>
154: HTMIMEParseSet * parseSet;
155: BOOL pars_local;
156: </PRE>
157:
2.23 frystyk 158: <H3>
159: Accept headers
160: </H3>
2.35 frystyk 161:
162: These are the accept headers that we want to send out.
163:
2.1 frystyk 164: <PRE>
165: HTList * conversions;
166: BOOL conv_local;
167:
168: HTList * encodings;
169: BOOL enc_local;
170:
2.38 frystyk 171: HTList * tes;
172: BOOL te_local;
2.21 frystyk 173:
2.1 frystyk 174: HTList * languages;
175: BOOL lang_local;
176:
177: HTList * charsets;
178: BOOL char_local;
2.20 hallam 179:
180: HTList * befores;
181: BOOL befores_local;
182:
183: HTList * afters;
184: BOOL afters_local;
2.1 frystyk 185: </PRE>
2.35 frystyk 186:
187: <H3>
188: Are we using a Proxy?
189: </H3>
190:
191: If so then we keep the name in this variable
192:
193: <PRE>
194: char * proxy;
195: BOOL full_uri;
196: </PRE>
197:
198: <H3>
199: Cache Control Directives
200: </H3>
201: <P>
202: This association list is a list of the cache control directives that are
203: to be sent as part of the <CODE>Cache-Control</CODE> header.
204: <PRE>
205: HTReload reload;
206: HTAssocList * cache_control;
207: </PRE>
208:
2.23 frystyk 209: <H3>
2.35 frystyk 210: Byte Ranges
211: </H3>
212:
213: This association list is a list of the cache control directives that are
214: to be sent as part of the <CODE>Range</CODE> header.
215:
216: <PRE>
217: HTAssocList * byte_ranges;
218: </PRE>
219:
220: <H3>
221: Connection Control Directives
222: </H3>
223: <P>
224: This association list is a list of the connection control directives that
225: are to be sent as part of the <CODE>Connection</CODE> header.
226:
227: <PRE>
228: HTAssocList * connection;
229: </PRE>
230: <H3>
2.38 frystyk 231: Expect Directives
232: </H3>
233: <P>
234: The Expect request-header field is used to indicate that particular
235: server behaviors are required by the client. A server that does not
236: understand or is unable to comply with any of the expectation values in
237: the Expect field of a request MUST respond with appropriate error
238: status.
239:
240: <PRE>
241: HTAssocList * expect;
242: </PRE>
243: <H3>
2.35 frystyk 244: Access Authentication Information
2.23 frystyk 245: </H3>
2.35 frystyk 246: <P>
247: 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 248: <PRE>
2.35 frystyk 249: char * realm; /* Current realm */
250: HTAssocList * credentials; /* Credentials received by server */
251: </PRE>
252: <H3>
253: Protocol Extension Protocol (PEP) Information
254: </H3>
2.5 frystyk 255:
2.35 frystyk 256: These association lists contain the information that we are to send as PEP headers in the request.
2.5 frystyk 257:
2.35 frystyk 258: <PRE>
259: HTAssocList * protocol;
260: HTAssocList * protocol_info;
261: HTAssocList * protocol_request;
2.1 frystyk 262: </PRE>
2.35 frystyk 263:
2.23 frystyk 264: <H3>
265: Anchors
266: </H3>
2.1 frystyk 267: <PRE>
2.10 frystyk 268: HTParentAnchor * anchor; /* The Client anchor for this request */
269:
2.1 frystyk 270: HTChildAnchor * childAnchor; /* For element within the object */
271: HTParentAnchor * parentAnchor; /* For referer field */
272: </PRE>
2.23 frystyk 273: <H3>
274: Streams From Network to Application
275: </H3>
2.1 frystyk 276: <PRE>
277: HTStream * output_stream;
278: HTFormat output_format;
2.26 frystyk 279: BOOL connected;
2.1 frystyk 280:
281: HTStream* debug_stream;
282: HTFormat debug_format;
283: </PRE>
2.23 frystyk 284: <H3>
285: Streams From Application to Network
286: </H3>
2.1 frystyk 287: <PRE>
288: HTStream * input_stream;
289: HTFormat input_format;
290: </PRE>
2.23 frystyk 291: <H3>
292: Callback Function for getting data down the Input Stream
293: </H3>
2.1 frystyk 294: <PRE>
2.5 frystyk 295: HTPostCallback * PostCallback;
2.1 frystyk 296: </PRE>
2.23 frystyk 297: <H3>
298: Context Swapping
299: </H3>
2.1 frystyk 300: <PRE>
301: HTRequestCallback * callback;
302: void * context;
303: </PRE>
2.23 frystyk 304: <H3>
305: PostWeb Information
306: </H3>
2.1 frystyk 307: <PRE>
308: HTRequest * source; /* Source for request or itself */
2.16 frystyk 309: HTParentAnchor * source_anchor; /* Source anchor or itself */
310:
2.1 frystyk 311: HTRequest * mainDestination; /* For the typical case */
312: HTList * destinations; /* List of related requests */
313: int destRequests; /* Number of destination requests */
314: int destStreams; /* Number of destination streams */
315: </PRE>
316: <PRE>
317: };
318: </PRE>
2.23 frystyk 319: <H2>
320: Post Web Management
321: </H2>
322: <P>
323: These functions are mainly used internally in the Library but there is no
324: reason for them not to be public.
2.1 frystyk 325: <PRE>
326: extern BOOL HTRequest_addDestination (HTRequest * src, HTRequest * dest);
327: extern BOOL HTRequest_removeDestination (HTRequest * dest);
2.14 frystyk 328: extern BOOL HTRequest_destinationsReady (HTRequest * me);
2.1 frystyk 329:
330: extern BOOL HTRequest_linkDestination (HTRequest * dest);
331: extern BOOL HTRequest_unlinkDestination (HTRequest * dest);
332:
333: extern BOOL HTRequest_removePostWeb (HTRequest * me);
334: extern BOOL HTRequest_killPostWeb (HTRequest * me);
335:
336: #define HTRequest_mainDestination(me) \
2.23 frystyk 337: ((me) && (me)->source ? (me)->source->mainDestination : NULL)
2.1 frystyk 338: #define HTRequest_isDestination(me) \
2.23 frystyk 339: ((me) && (me)->source && (me) != (me)->source)
2.1 frystyk 340: #define HTRequest_isMainDestination(me) \
2.23 frystyk 341: ((me) && (me)->source && \
342: (me) == (me)->source->mainDestination)
2.1 frystyk 343: #define HTRequest_isSource(me) \
2.23 frystyk 344: ((me) && (me)->source && (me) == (me)->source)
2.1 frystyk 345: </PRE>
2.23 frystyk 346: <P>
2.1 frystyk 347: End of Declaration
348: <PRE>
349: #endif /* HTREQMAN_H */
350: </PRE>
2.23 frystyk 351: <P>
352: <HR>
2.21 frystyk 353: <ADDRESS>
2.41 ! kahan 354: @(#) $Id: HTReqMan.html,v 1.2 1998/10/08 18:13:51 cvs Exp $
2.21 frystyk 355: </ADDRESS>
2.23 frystyk 356: </BODY></HTML>
Webmaster