org.apache.tomcat.util.http
Class MimeHeaders
java.lang.Object
org.apache.tomcat.util.http.MimeHeaders
public class MimeHeaders
extends java.lang.Object
Memory-efficient repository for Mime Headers. When the object is recycled, it
will keep the allocated headers[] and all the MimeHeaderField - no GC is generated.
For input headers it is possible to use the MessageByte for Fileds - so no GC
will be generated.
The only garbage is generated when using the String for header names/values -
this can't be avoided when the servlet calls header methods, but is easy
to avoid inside tomcat. The goal is to use _only_ MessageByte-based Fields,
and reduce to 0 the memory overhead of tomcat.
TODO:
XXX one-buffer parsing - for http ( other protocols don't need that )
XXX remove unused methods
XXX External enumerations, with 0 GC.
XXX use HeaderName ID
- dac@eng.sun.com
- James Todd [gonzo@eng.sun.com]
- Costin Manolache
- kevin seguin
static int | DEFAULT_HEADER_SIZE - Initial size - should be == average number of headers per request
XXX make it configurable ( fine-tuning of web-apps )
|
MimeHeaders() - Creates a new MimeHeaders object using a default buffer size.
|
MessageBytes | addValue(String name) - Create a new named header , return the MessageBytes
container for the new value
|
MessageBytes | addValue(b[] , int startN, int len) - Create a new named header using un-translated byte[].
|
MessageBytes | addValue(c[] , int startN, int len) - Create a new named header using translated char[].
|
void | clear() - Clears all header fields.
|
int | findHeader(String name, int starting) - Find the index of a header with the given name.
|
String | getHeader(String name)
|
MessageBytes | getName(int n) - Returns the Nth header name, or null if there is no such header.
|
MessageBytes | getValue(String name) - Finds and returns a header field with the given name.
|
MessageBytes | getValue(int n) - Returns the Nth header value, or null if there is no such header.
|
Enumeration | names() - Returns an enumeration of strings representing the header field names.
|
void | recycle() - Clears all header fields.
|
void | removeHeader(String name) - Removes a header field with the specified name.
|
MessageBytes | setValue(String name) - Allow "set" operations -
return a MessageBytes container for the
header value ( existing header or new
if this .
|
int | size() - Returns the current number of header fields.
|
String | toString() - EXPENSIVE!!! only for debugging.
|
Enumeration | values(String name)
|
DEFAULT_HEADER_SIZE
public static final int DEFAULT_HEADER_SIZE
Initial size - should be == average number of headers per request
XXX make it configurable ( fine-tuning of web-apps )
- 8
MimeHeaders
public MimeHeaders()
Creates a new MimeHeaders object using a default buffer size.
addValue
public MessageBytes addValue(String name)
Create a new named header , return the MessageBytes
container for the new value
addValue
public MessageBytes addValue(b[] ,
int startN,
int len)
Create a new named header using un-translated byte[].
The conversion to chars can be delayed until
encoding is known.
addValue
public MessageBytes addValue(c[] ,
int startN,
int len)
Create a new named header using translated char[].
clear
public void clear()
Clears all header fields.
findHeader
public int findHeader(String name,
int starting)
Find the index of a header with the given name.
getHeader
public String getHeader(String name)
getName
public MessageBytes getName(int n)
Returns the Nth header name, or null if there is no such header.
This may be used to iterate through all header fields.
getValue
public MessageBytes getValue(String name)
Finds and returns a header field with the given name. If no such
field exists, null is returned. If more than one such field is
in the header, an arbitrary one is returned.
getValue
public MessageBytes getValue(int n)
Returns the Nth header value, or null if there is no such header.
This may be used to iterate through all header fields.
names
public Enumeration names()
Returns an enumeration of strings representing the header field names.
Field names may appear multiple times in this enumeration, indicating
that multiple fields with that name exist in this header.
recycle
public void recycle()
Clears all header fields.
removeHeader
public void removeHeader(String name)
Removes a header field with the specified name. Does nothing
if such a field could not be found.
name
- the name of the header field to be removed
setValue
public MessageBytes setValue(String name)
Allow "set" operations -
return a MessageBytes container for the
header value ( existing header or new
if this .
size
public int size()
Returns the current number of header fields.
toString
public String toString()
EXPENSIVE!!! only for debugging.
values
public Enumeration values(String name)
Copyright B) 2000-2003 Apache Software Foundation. All Rights Reserved.