The Stream Builder is responsible for setting up the stream pipe from the
Channel Object to the
Request Object when data is arriving,
for example as a response to s HTTP
Get request. As data arrives, we start to parse it and the more we
know the more we can build up our stream pipe. For example, in the case of
HTTP, we first have a stream that can parse the HTTP response line containing
"200 OK
". Then we have a MIME
parser for handling the MIME headers. When the MIME headers have been
parsed, we know the content type and any encoding of the MIME body. If we
need to decode a chunked encoding then we set up a chunked decoder, and if
we have to parse a HTML object then we set up a HTML parser.
The Format Manager is also responsible for keeping track of the "preferences" of the application and/or user. It is an integral part of the Web and HTTP, that the client application can express its preferences as a set of "accept" headers in a HTTP request. This task is highly related to the task mentioned above as we there use the modules that are registered and here tell the remote server what we are capable of doing and what we would prefer. Currently there are four dimensions for handling "accept" headers:
The application can assign its preferences in two ways: either locally to a single request or globally to all requests. The local assignment can either add to or override the global settings depending on how they are registered. All local registration is handled by the Request Object and the global registration is handled by the Format Manager