Public Member Functions | Public Attributes

nsIHttpResponse Interface Reference

Represents an HTTP response, as described in RFC 2616, section 6. More...

import "nsIHttpServer.idl";

Collaboration diagram for nsIHttpResponse:

List of all members.

Public Member Functions

void setStatusLine (in string httpVersion, in unsigned short statusCode, in string description)
 Sets the status line for this.
void setHeader (in string name, in string value, in boolean merge)
 Sets the specified header in this.
void write (in string data)
 Writes a string to the response's output stream.
void processAsync ()
 Signals that this response is being constructed asynchronously.
void seizePower ()
 Seizes complete control of this response (and its connection) from the server, allowing raw and unfettered access to data being sent in the HTTP response.
void finish ()
 Signals that construction of this response is complete and that it may be sent over the network to the client, or if seizePower() has been called signals that all data has been written and that the underlying connection may be closed.

Public Attributes

readonly attribute nsIOutputStream bodyOutputStream
 A stream to which data appearing in the body of this response (or in the totality of the response if seizePower() is called) should be written.

Detailed Description

Represents an HTTP response, as described in RFC 2616, section 6.


Member Function Documentation

void nsIHttpResponse::finish (  ) 

Signals that construction of this response is complete and that it may be sent over the network to the client, or if seizePower() has been called signals that all data has been written and that the underlying connection may be closed.

This method may only be called after processAsync() or seizePower() has been called. This method is idempotent.

Exceptions:
NS_ERROR_UNEXPECTED if processAsync() or seizePower() has not already been properly called
void nsIHttpResponse::processAsync (  ) 

Signals that this response is being constructed asynchronously.

Requests are typically completely constructed during nsIHttpRequestHandler.handle; however, responses which require significant resources (time, memory, processing) to construct can be created and sent incrementally by calling this method during the call to nsIHttpRequestHandler.handle. This method only has this effect when called during nsIHttpRequestHandler.handle; behavior is undefined if it is called at a later time. It may be called multiple times with no ill effect, so long as each call occurs before finish() is called.

Exceptions:
NS_ERROR_UNEXPECTED if not initially called within a nsIHttpRequestHandler.handle call or if called after this response has been finished
NS_ERROR_NOT_AVAILABLE if seizePower() has been called on this
void nsIHttpResponse::seizePower (  ) 

Seizes complete control of this response (and its connection) from the server, allowing raw and unfettered access to data being sent in the HTTP response.

Once this method has been called the only property which may be accessed without an exception being thrown is bodyOutputStream, and the only methods which may be accessed without an exception being thrown are write(), finish(), and seizePower() (which may be called multiple times without ill effect so long as all calls are otherwise allowed).

After a successful call, all data subsequently written to the body of this response is written directly to the corresponding connection. (Previously- written data is silently discarded.) No status line or headers are sent before doing so; if the response handler wishes to write such data, it must do so manually. Data generation completes only when finish() is called; it is not enough to simply call close() on bodyOutputStream.

Exceptions:
NS_ERROR_NOT_AVAILABLE if processAsync() has been called on this
NS_ERROR_UNEXPECTED if finish() has been called on this
void nsIHttpResponse::setHeader ( in string  name,
in string  value,
in boolean  merge 
)

Sets the specified header in this.

Parameters:
name the name of the header; must match the field-name production per RFC 2616
value the value of the header; must match the field-value production per RFC 2616
merge when true, if the given header already exists in this, the values passed to this function will be merged into the existing header, per RFC 2616 header semantics (except for the Set-Cookie, WWW-Authenticate, and Proxy-Authenticate headers, which will treat each such merged header as an additional instance of the header, for real-world compatibility reasons); when false, replaces any existing header of the given name (if any exists) with a new header with the specified value
Exceptions:
NS_ERROR_INVALID_ARG if name or value is not a valid header component
NS_ERROR_NOT_AVAILABLE if this response is being processed asynchronously and data has been written to this response's body, or if seizePower() has been called on this
void nsIHttpResponse::setStatusLine ( in string  httpVersion,
in unsigned short  statusCode,
in string  description 
)

Sets the status line for this.

If this method is never called on this, the status line defaults to "HTTP/", followed by the server's default HTTP version (e.g. "1.1"), followed by " 200 OK".

Parameters:
httpVersion the HTTP version of this, as a string (e.g. "1.1"); if null, the server default is used
code the numeric HTTP status code for this
description a human-readable description of code; may be null if no description is desired
Exceptions:
NS_ERROR_INVALID_ARG if httpVersion is not a valid HTTP version string, statusCode is greater than 999, or description contains invalid characters
NS_ERROR_NOT_AVAILABLE if this response is being processed asynchronously and data has been written to this response's body, or if seizePower() has been called on this
void nsIHttpResponse::write ( in string  data  ) 

Writes a string to the response's output stream.

This method is merely a convenient shorthand for writing the same data to bodyOutputStream directly.

Note:
This method is only guaranteed to work with ASCII data.
Exceptions:
NS_ERROR_NOT_AVAILABLE if called after this response has been fully constructed

Member Data Documentation

A stream to which data appearing in the body of this response (or in the totality of the response if seizePower() is called) should be written.

After this response has been designated as being processed asynchronously, or after seizePower() has been called on this, subsequent writes will no longer be buffered and will be written to the underlying transport without delaying until the entire response is constructed. Write-through may or may not be synchronous in the implementation, and in any case particular behavior may not be observable to the HTTP client as intermediate buffers both in the server socket and in the client may delay written data; be prepared for delays at any time.

Exceptions:
NS_ERROR_NOT_AVAILABLE if accessed after this response is fully constructed

The documentation for this interface was generated from the following file: