/*                                  W3C Sample Code Library libwww Private Request Definition
                               PRIVATE RESPONSE DEFINITION
                                             
 */
/*
**      (c) COPYRIGHT MIT 1995.
**      Please first read the full copyright statement in the file COPYRIGH.
*/
/*

   This module is the private part of the response object. It has the functions
   declarations that are private to the Library and that shouldn't be used by
   applications. See also the public part of the declarition in the HTResponse Module.
   
   This module is implemented by HTResMan.c, and it is a part of the W3C Sample Code
   Library.
   
 */
#ifndef HTRESMAN_H
#define HTRESMAN_H

#include "HTResponse.h"
#include "HTList.h"
#include "HTFormat.h"
#include "HTAnchor.h"
#include "HTMethod.h"
#include "HTAABrow.h"
#include "HTStream.h"
#include "HTNet.h"
#include "HTMIMPrs.h"
/*

   When a request is handled, all kinds of things about it need to be passed along
   together with a request. It is intended to live as long as the request is still active,
   but can be deleted as soon as it has terminated. Only the anchor object stays around
   after the request itself is terminated.
   
 */
struct _HTResponse {

    int                 hash;
/*

  Redirection
  
   If we get a redirection back then we return the new destination for this request to the
   application using this anchor.
   
 */
    HTAnchor *          redirectionAnchor;                /* Redirection URL */
/*

  Retry Request After
  
   If we get a response back saying that we have to retry the request after a certain
   amount of time then add this information here. Libwww does not retry the request
   automatically - this is for the application to do.
   
 */
    time_t              retry_after;             /* Absolut time for a retry */
/*

  Access Authentication Information
  
   The challenge and the credentials entries are use by the authentication parsers and
   generators respectively.
   
 */
    char *              realm;                              /* Current realm */
    char *              scheme;                            /* Current scheme */

    HTAssocList *       challenge;         /* Challenge received in response */
/*

  Connection Control Directives
  
   This association list is a list of the connection control directives that have been
   received in the response.
   
 */
    HTAssocList *       connection;
/*

  Protocol Extension Protocol (PEP) Information
  
   These association lists contain the information that we have received in PEP headers in
   the response.
   
 */
    HTAssocList *       protocol;
    HTAssocList *       protocol_info;
    HTAssocList *       protocol_request;
/*

  Cache Control Directives
  
   This association list is a list of the cache control directives that have been received
   as part of the response. We also keep track of whether the response si cachable or not.
   
 */
    BOOL                cachable;
    BOOL                cached;             /* If anchor has inherited lists */
    HTAssocList *       cache_control;
/*

  Range Requests
  
   We may get a partial response in which case we register the received ranges of the
   resource.
   
 */
    HTAssocList *       byte_ranges;
/*

  Variants
  
   The response may be a negotiated response in which case we wanna know. This has
   significance for whether the object is cachable or not.
   
 */
    HTAssocList *       variants;
/*

  Content Length
  
   We register the content length as thjis is of importance to all responses. The content
   length is a common way to figure out how many bytes we can expect.
   
 */
    long int           content_length;
/*

  Content Type
  
   The Content type is important to know as we set of the stream pipe and do the format
   conversion.
   
 */
    HTFormat           content_type;
    HTAssocList *      type_parameters;    /* Type parameters (charset etc.) */
/*

  Content Encoding
  
   We register the content-encoding as it may affect the stream pipe as we set it up.
   
 */
    HTList *           content_encoding;
/*

  Transfer Encoding
  
   The transfer encoding is likewise important when we set up the stream pipe.
   
 */
    HTEncoding         transfer_encoding;
/*

  Trailer
  
   The tailers are headers that come at the end
   
 */
    HTAssocList *      trailer;
/*

  Original Reponse Header Values
  
   We store the original headers as they may become useful in many ways - for example in
   lazy parsing.
   
 */
    HTAssocList *      headers;
/*

 */
}; /* End of definition of HTResponse */
/*

   End of Declaration
   
 */
#endif /* HTRESMAN_H */
/*

   
   ___________________________________
   
                           @(#) $Id: HTResMan.html,v 2.3 1997/11/26 16:05:47 frystyk Exp $
                                                                                          
   */
