## org.w3c.www.http
Class HttpParser

    java.lang.Object
      |
      +--org.w3c.www.http.HttpParser

public class HttpParser
extends java.lang.Object

A private class to help with the parsing. Contains only some static method, helping to parse various byte buffers into Java object (Yes, I am still and again trying to reduce memory consumption).

I don't know wether this sucks or not. One hand I am sparing a tremedous amount of Strings creation, on the other end I am recoding a number of parsers that are available on String instances.

Constructor Summary
`HttpParser()`

Method Summary
`static int` | `compare(byte[] b1, int o1, int l1, byte[] b2)` Compare two byte arrays.
`static int` | `compare(byte[] b1, int o1, int l1, byte[] b2, int o2, int l2)` Compare two byte arrays.
`protected static void` | `error(java.lang.String mth, java.lang.String msg)` Emit an error.
`static int` | `nextItem(byte[] buf, org.w3c.www.http.ParseState ps)` Parse list of items, taking care of quotes and optional LWS.
`static long` | `parseDate(byte[] buf, org.w3c.www.http.ParseState ps)` Parse the given byte array as an HTTP compliant date.
`static long` | `parseDateOrDeltaSeconds(byte[] buf, org.w3c.www.http.ParseState ps)`
`static long` | `parseDateOrDeltaSeconds(byte[] buf, org.w3c.www.http.ParseState ps, long relto)` Parse a date as either a delta-second value, or a date.
`static long` | `parseDeltaSecond(byte[] buf, org.w3c.www.http.ParseState ps)` Parse a delta-second value.
`static int` | `parseInt(byte[] buf, int radix, org.w3c.www.http.ParseState ps)` Parse an integer, and return an updated pointer.
`static int` | `parseInt(byte[] buf, org.w3c.www.http.ParseState ps)`
`static int` | `parseMonth(byte[] buf, org.w3c.www.http.ParseState ps)`
`static double` | `parseQuality(byte[] buf, org.w3c.www.http.ParseState ps)`
`static int` | `skipSpaces(byte[] buf, org.w3c.www.http.ParseState ps)` Skip leading LWS, not including CR LF.
`static boolean` | `unquote(byte[] buf, org.w3c.www.http.ParseState ps)`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### HttpParser

    public HttpParser()

Method Detail

### error

    protected static void error(java.lang.String mth,
                                java.lang.String msg)
                         throws HttpInvalidValueException

  Emit an error.
  Parameters:
    `mth` - The method trigerring the error.
    `msg` - An associated message.
  Throws:
    HttpInvalidValueException - To indicate the error to caller.

### compare

    public static final int compare(byte[] b1,
                                    int o1,
                                    int l1,
                                    byte[] b2,
                                    int o2,
                                    int l2)

  Compare two byte arrays. I am not comfident about how the equality of byte arrays is performed by other means, sorry.
  Parameters:
    `b1` - The first byte array.
    `o1` - The offset of the bytes to compare.
    `l1` - The number of bytes to compare.
    `b2` - What to compare against.
    `o2` - The offset of the bytes to compare.
    `l2` - The length of the bytes to compare.
  Returns:
    An integer, <0 if b1 is less than b2, 0 if equals, >0otherwise.

### compare

    public static final int compare(byte[] b1,
                                    int o1,
                                    int l1,
                                    byte[] b2)

  Compare two byte arrays. Short-cut version of the above version.
  Parameters:
    `b1` - The first byte array.
    `o1` - The offset of the bytes to compare.
    `l1` - The number of bytes to compare.
    `b2` - What to compare against.
  Returns:
    An integer, <0 if b1 is less than b2, 0 if equals, >0otherwise.

### parseInt

    public static final int parseInt(byte[] buf,
                                     int radix,
                                     org.w3c.www.http.ParseState ps)

  Parse an integer, and return an updated pointer.

### parseInt

    public static final int parseInt(byte[] buf,
                                     org.w3c.www.http.ParseState ps)

### unquote

    public static boolean unquote(byte[] buf,
                                  org.w3c.www.http.ParseState ps)

### skipSpaces

    public static final int skipSpaces(byte[] buf,
                                       org.w3c.www.http.ParseState ps)

  Skip leading LWS, not including CR LF. Update the input offset, after any leading space.
  Parameters:
    `buf` - The buffer to be parsed.
    `ptr` - The buffer pointer to be updated on return.
  Returns:
    The potentially advanced buffer input offset.

### nextItem

    public static final int nextItem(byte[] buf,
                                     org.w3c.www.http.ParseState ps)

  Parse list of items, taking care of quotes and optional LWS. The output offset points to the next element of the list.

### parseMonth

    public static int parseMonth(byte[] buf,
                                 org.w3c.www.http.ParseState ps)

### parseDeltaSecond

    public static long parseDeltaSecond(byte[] buf,
                                        org.w3c.www.http.ParseState ps)

  Parse a delta-second value.
  Returns:
    A long giving the date at which to retry as a number of milliseconds since Java epoch.

### parseDate

    public static long parseDate(byte[] buf,
                                 org.w3c.www.http.ParseState ps)

  Parse the given byte array as an HTTP compliant date.
  Parameters:
    `buf` - The byte buffer to parse.
    `sp` - The current parsing state.
  Returns:
    A long giving the date as a number of milliseconds since epoch.

### parseDateOrDeltaSeconds

    public static long parseDateOrDeltaSeconds(byte[] buf,
                                               org.w3c.www.http.ParseState ps,
                                               long relto)

  Parse a date as either a delta-second value, or a date. In case of delta seconds, we use the current time (except if one is provided), to compute the date.
  Returns:
    A date encoded as the number of millisconds since Java epoch.

### parseDateOrDeltaSeconds

    public static long parseDateOrDeltaSeconds(byte[] buf,
                                               org.w3c.www.http.ParseState ps)

### parseQuality

    public static double parseQuality(byte[] buf,
                                      org.w3c.www.http.ParseState ps)