Annotation of libwww/Library/src/HTReqMan.html, revision 2.39
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;
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.38 frystyk 162: HTList * tes;
163: BOOL te_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>
2.38 frystyk 222: Expect Directives
223: </H3>
224: <P>
225: The Expect request-header field is used to indicate that particular
226: server behaviors are required by the client. A server that does not
227: understand or is unable to comply with any of the expectation values in
228: the Expect field of a request MUST respond with appropriate error
229: status.
230:
231: <PRE>
232: HTAssocList * expect;
233: </PRE>
234: <H3>
2.35 frystyk 235: Access Authentication Information
2.23 frystyk 236: </H3>
2.35 frystyk 237: <P>
238: 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 239: <PRE>
2.35 frystyk 240: char * realm; /* Current realm */
241: HTAssocList * credentials; /* Credentials received by server */
242: </PRE>
243: <H3>
244: Protocol Extension Protocol (PEP) Information
245: </H3>
2.5 frystyk 246:
2.35 frystyk 247: These association lists contain the information that we are to send as PEP headers in the request.
2.5 frystyk 248:
2.35 frystyk 249: <PRE>
250: HTAssocList * protocol;
251: HTAssocList * protocol_info;
252: HTAssocList * protocol_request;
2.1 frystyk 253: </PRE>
2.35 frystyk 254:
2.23 frystyk 255: <H3>
256: Anchors
257: </H3>
2.1 frystyk 258: <PRE>
2.10 frystyk 259: HTParentAnchor * anchor; /* The Client anchor for this request */
260:
2.1 frystyk 261: HTChildAnchor * childAnchor; /* For element within the object */
262: HTParentAnchor * parentAnchor; /* For referer field */
263: </PRE>
2.23 frystyk 264: <H3>
265: Streams From Network to Application
266: </H3>
2.1 frystyk 267: <PRE>
268: HTStream * output_stream;
269: HTFormat output_format;
2.26 frystyk 270: BOOL connected;
2.1 frystyk 271:
272: HTStream* debug_stream;
273: HTFormat debug_format;
274: </PRE>
2.23 frystyk 275: <H3>
276: Streams From Application to Network
277: </H3>
2.1 frystyk 278: <PRE>
279: HTStream * input_stream;
280: HTFormat input_format;
281: </PRE>
2.23 frystyk 282: <H3>
283: Callback Function for getting data down the Input Stream
284: </H3>
2.1 frystyk 285: <PRE>
2.5 frystyk 286: HTPostCallback * PostCallback;
2.1 frystyk 287: </PRE>
2.23 frystyk 288: <H3>
289: Context Swapping
290: </H3>
2.1 frystyk 291: <PRE>
292: HTRequestCallback * callback;
293: void * context;
294: </PRE>
2.23 frystyk 295: <H3>
296: PostWeb Information
297: </H3>
2.1 frystyk 298: <PRE>
299: HTRequest * source; /* Source for request or itself */
2.16 frystyk 300: HTParentAnchor * source_anchor; /* Source anchor or itself */
301:
2.1 frystyk 302: HTRequest * mainDestination; /* For the typical case */
303: HTList * destinations; /* List of related requests */
304: int destRequests; /* Number of destination requests */
305: int destStreams; /* Number of destination streams */
306: </PRE>
307: <PRE>
308: };
309: </PRE>
2.23 frystyk 310: <H2>
311: Post Web Management
312: </H2>
313: <P>
314: These functions are mainly used internally in the Library but there is no
315: reason for them not to be public.
2.1 frystyk 316: <PRE>
317: extern BOOL HTRequest_addDestination (HTRequest * src, HTRequest * dest);
318: extern BOOL HTRequest_removeDestination (HTRequest * dest);
2.14 frystyk 319: extern BOOL HTRequest_destinationsReady (HTRequest * me);
2.1 frystyk 320:
321: extern BOOL HTRequest_linkDestination (HTRequest * dest);
322: extern BOOL HTRequest_unlinkDestination (HTRequest * dest);
323:
324: extern BOOL HTRequest_removePostWeb (HTRequest * me);
325: extern BOOL HTRequest_killPostWeb (HTRequest * me);
326:
327: #define HTRequest_mainDestination(me) \
2.23 frystyk 328: ((me) && (me)->source ? (me)->source->mainDestination : NULL)
2.1 frystyk 329: #define HTRequest_isDestination(me) \
2.23 frystyk 330: ((me) && (me)->source && (me) != (me)->source)
2.1 frystyk 331: #define HTRequest_isMainDestination(me) \
2.23 frystyk 332: ((me) && (me)->source && \
333: (me) == (me)->source->mainDestination)
2.1 frystyk 334: #define HTRequest_isSource(me) \
2.23 frystyk 335: ((me) && (me)->source && (me) == (me)->source)
2.1 frystyk 336: </PRE>
2.23 frystyk 337: <P>
2.1 frystyk 338: End of Declaration
339: <PRE>
340: #endif /* HTREQMAN_H */
341: </PRE>
2.23 frystyk 342: <P>
343: <HR>
2.21 frystyk 344: <ADDRESS>
2.39 ! frystyk 345: @(#) $Id: HTReqMan.html,v 2.38 1997/11/26 16:05:45 frystyk Exp $
2.21 frystyk 346: </ADDRESS>
2.23 frystyk 347: </BODY></HTML>
Webmaster