// line 1 "HttpRequestParser.rl"
/* Copyright (c) 2006, Sriram Srinivasan
*
* You may distribute this software under the terms of the license
* specified in the file "License"
*/
package kilim.http;
/**
* --- DO NOT EDIT -----
* HttpRequestParser.java generated from RAGEL (http://www.complang.org/ragel/) from the
* specification file HttpRequestParser.rl. All changes must be made in the .rl file.
**/
import java.util.TimeZone;
import java.util.GregorianCalendar;
import java.nio.charset.Charset;
import java.nio.ByteBuffer;
import java.io.UnsupportedEncodingException;
import java.io.IOException;
import java.net.URLDecoder;
public class HttpRequestParser {
public static final Charset UTF8 = Charset.forName("UTF-8");
// line 135 "HttpRequestParser.rl"
// line 34 "HttpRequestParser.java"
private static byte[] init__http_parser_actions_0()
{
return new byte [] {
0, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, 1,
5, 1, 6, 1, 7, 1, 8, 1, 9, 1, 10, 1,
11, 1, 12, 1, 13, 2, 0, 3, 2, 0, 6, 2,
1, 5
};
}
private static final byte _http_parser_actions[] = init__http_parser_actions_0();
private static short[] init__http_parser_key_offsets_0()
{
return new short [] {
0, 0, 10, 12, 14, 16, 18, 20, 21, 31, 41, 50,
52, 53, 54, 55, 56, 58, 61, 63, 66, 67, 69, 70,
72, 73, 75, 84, 93, 99, 105, 111, 117, 121, 125, 135,
141, 147, 156, 165, 171, 177, 179, 181, 183, 185, 187, 189,
191, 193, 195, 197, 199, 203, 205, 207, 209
};
}
private static final short _http_parser_key_offsets[] = init__http_parser_key_offsets_0();
private static char[] init__http_parser_trans_keys_0()
{
return new char [] {
68, 71, 72, 79, 80, 100, 103, 104, 111, 112, 69, 101,
76, 108, 69, 101, 84, 116, 69, 101, 32, 32, 43, 47,
58, 45, 57, 65, 90, 97, 122, 43, 58, 45, 46, 48,
57, 65, 90, 97, 122, 32, 34, 35, 37, 60, 62, 127,
0, 31, 32, 72, 84, 84, 80, 47, 48, 57, 46, 48,
57, 48, 57, 13, 48, 57, 10, 13, 58, 58, 13, 32,
13, 10, 58, 32, 37, 60, 62, 127, 0, 31, 34, 35,
32, 37, 60, 62, 127, 0, 31, 34, 35, 48, 57, 65,
70, 97, 102, 48, 57, 65, 70, 97, 102, 48, 57, 65,
70, 97, 102, 48, 57, 65, 70, 97, 102, 32, 35, 59,
63, 32, 35, 59, 63, 32, 34, 35, 37, 60, 62, 63,
127, 0, 31, 48, 57, 65, 70, 97, 102, 48, 57, 65,
70, 97, 102, 32, 34, 35, 37, 60, 62, 127, 0, 31,
32, 34, 35, 37, 60, 62, 127, 0, 31, 48, 57, 65,
70, 97, 102, 48, 57, 65, 70, 97, 102, 69, 101, 84,
116, 69, 101, 65, 97, 68, 100, 80, 112, 84, 116, 73,
105, 79, 111, 78, 110, 83, 115, 79, 85, 111, 117, 83,
115, 84, 116, 84, 116, 58, 0
};
}
private static final char _http_parser_trans_keys[] = init__http_parser_trans_keys_0();
private static byte[] init__http_parser_single_lengths_0()
{
return new byte [] {
0, 10, 2, 2, 2, 2, 2, 1, 4, 2, 7, 2,
1, 1, 1, 1, 0, 1, 0, 1, 1, 2, 1, 2,
1, 2, 5, 5, 0, 0, 0, 0, 4, 4, 8, 0,
0, 7, 7, 0, 0, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 4, 2, 2, 2, 1
};
}
private static final byte _http_parser_single_lengths[] = init__http_parser_single_lengths_0();
private static byte[] init__http_parser_range_lengths_0()
{
return new byte [] {
0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 1, 0,
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
0, 0, 2, 2, 3, 3, 3, 3, 0, 0, 1, 3,
3, 1, 1, 3, 3, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0
};
}
private static final byte _http_parser_range_lengths[] = init__http_parser_range_lengths_0();
private static short[] init__http_parser_index_offsets_0()
{
return new short [] {
0, 0, 11, 14, 17, 20, 23, 26, 28, 36, 43, 52,
55, 57, 59, 61, 63, 65, 68, 70, 73, 75, 78, 80,
83, 85, 88, 96, 104, 108, 112, 116, 120, 125, 130, 140,
144, 148, 157, 166, 170, 174, 177, 180, 183, 186, 189, 192,
195, 198, 201, 204, 207, 212, 215, 218, 221
};
}
private static final short _http_parser_index_offsets[] = init__http_parser_index_offsets_0();
private static byte[] init__http_parser_indicies_0()
{
return new byte [] {
0, 2, 3, 4, 5, 0, 2, 3, 4, 5, 1, 6,
6, 1, 7, 7, 1, 8, 8, 1, 9, 9, 1, 10,
10, 1, 11, 1, 11, 12, 13, 14, 12, 12, 12, 1,
15, 16, 15, 15, 15, 15, 1, 17, 1, 18, 19, 1,
1, 1, 1, 16, 17, 20, 1, 21, 1, 22, 1, 23,
1, 24, 1, 25, 1, 26, 27, 1, 28, 1, 29, 28,
1, 30, 1, 32, 1, 31, 34, 33, 36, 37, 35, 39,
38, 40, 34, 33, 41, 43, 1, 1, 1, 1, 1, 42,
44, 46, 1, 1, 1, 1, 1, 45, 47, 47, 47, 1,
45, 45, 45, 1, 48, 48, 48, 1, 16, 16, 16, 1,
17, 18, 50, 51, 49, 52, 53, 54, 55, 49, 17, 1,
18, 56, 1, 1, 51, 1, 1, 50, 57, 57, 57, 1,
50, 50, 50, 1, 58, 1, 60, 61, 1, 1, 1, 1,
59, 62, 1, 64, 65, 1, 1, 1, 1, 63, 66, 66,
66, 1, 63, 63, 63, 1, 67, 67, 1, 68, 68, 1,
69, 69, 1, 70, 70, 1, 71, 71, 1, 72, 72, 1,
73, 73, 1, 74, 74, 1, 75, 75, 1, 76, 76, 1,
77, 77, 1, 78, 79, 78, 79, 1, 80, 80, 1, 81,
81, 1, 82, 82, 1, 34, 33, 0
};
}
private static final byte _http_parser_indicies[] = init__http_parser_indicies_0();
private static byte[] init__http_parser_trans_targs_0()
{
return new byte [] {
2, 0, 41, 43, 46, 52, 3, 4, 5, 6, 7, 8,
9, 32, 10, 9, 10, 11, 26, 30, 12, 13, 14, 15,
16, 17, 18, 17, 19, 20, 21, 22, 25, 22, 23, 24,
20, 23, 24, 20, 56, 11, 27, 28, 11, 27, 28, 29,
31, 33, 34, 37, 11, 26, 34, 37, 35, 36, 11, 38,
26, 39, 11, 38, 26, 39, 40, 42, 7, 44, 45, 7,
47, 48, 49, 50, 51, 7, 53, 55, 54, 7, 7
};
}
private static final byte _http_parser_trans_targs[] = init__http_parser_trans_targs_0();
private static byte[] init__http_parser_trans_actions_0()
{
return new byte [] {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0,
1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 0, 0, 0, 15, 0, 1, 1, 0, 5, 1,
29, 1, 0, 7, 0, 32, 1, 1, 13, 0, 0, 0,
0, 0, 0, 0, 9, 9, 9, 9, 0, 0, 35, 3,
35, 3, 11, 0, 11, 0, 0, 0, 17, 0, 0, 23,
0, 0, 0, 0, 0, 27, 0, 0, 0, 19, 25
};
}
private static final byte _http_parser_trans_actions[] = init__http_parser_trans_actions_0();
static final int http_parser_start = 1;
static final int http_parser_first_final = 56;
static final int http_parser_error = 0;
static final int http_parser_en_main = 1;
// line 138 "HttpRequestParser.rl"
public static void err(String msg) throws IOException{
throw new IOException(msg);
}
public static void initHeader(HttpRequest req, int headerLength) throws IOException {
ByteBuffer bb = req.buffer;
/* required variables */
byte[] data = bb.array();
int p = 0;
int pe = headerLength;
// int eof = pe;
int cs = 0;
// variables used by actions in http_req_parser machine above.
int query_start = 0;
int mark = 0;
String field_name = "";
// line 219 "HttpRequestParser.java"
{
cs = http_parser_start;
}
// line 158 "HttpRequestParser.rl"
// line 226 "HttpRequestParser.java"
{
int _klen;
int _trans = 0;
int _acts;
int _nacts;
int _keys;
int _goto_targ = 0;
_goto: while (true) {
switch ( _goto_targ ) {
case 0:
if ( p == pe ) {
_goto_targ = 4;
continue _goto;
}
if ( cs == 0 ) {
_goto_targ = 5;
continue _goto;
}
case 1:
_match: do {
_keys = _http_parser_key_offsets[cs];
_trans = _http_parser_index_offsets[cs];
_klen = _http_parser_single_lengths[cs];
if ( _klen > 0 ) {
int _lower = _keys;
int _mid;
int _upper = _keys + _klen - 1;
while (true) {
if ( _upper < _lower )
break;
_mid = _lower + ((_upper-_lower) >> 1);
if ( data[p] < _http_parser_trans_keys[_mid] )
_upper = _mid - 1;
else if ( data[p] > _http_parser_trans_keys[_mid] )
_lower = _mid + 1;
else {
_trans += (_mid - _keys);
break _match;
}
}
_keys += _klen;
_trans += _klen;
}
_klen = _http_parser_range_lengths[cs];
if ( _klen > 0 ) {
int _lower = _keys;
int _mid;
int _upper = _keys + (_klen<<1) - 2;
while (true) {
if ( _upper < _lower )
break;
_mid = _lower + (((_upper-_lower) >> 1) & ~1);
if ( data[p] < _http_parser_trans_keys[_mid] )
_upper = _mid - 2;
else if ( data[p] > _http_parser_trans_keys[_mid+1] )
_lower = _mid + 2;
else {
_trans += ((_mid - _keys)>>1);
break _match;
}
}
_trans += _klen;
}
} while (false);
_trans = _http_parser_indicies[_trans];
cs = _http_parser_trans_targs[_trans];
if ( _http_parser_trans_actions[_trans] != 0 ) {
_acts = _http_parser_trans_actions[_trans];
_nacts = (int) _http_parser_actions[_acts++];
while ( _nacts-- > 0 )
{
switch ( _http_parser_actions[_acts++] )
{
case 0:
// line 31 "HttpRequestParser.rl"
{mark = p; }
break;
case 1:
// line 33 "HttpRequestParser.rl"
{query_start = p; }
break;
case 2:
// line 35 "HttpRequestParser.rl"
{
field_name = kw_lookup(data, mark, p);
if (field_name == null) {// not a known keyword
field_name = req.extractRange(mark, p);
}
}
break;
case 3:
// line 42 "HttpRequestParser.rl"
{
int value = encodeRange(mark, p);
req.addField(field_name, value);
}
break;
case 4:
// line 47 "HttpRequestParser.rl"
{
req.uriPath = req.extractRange(mark, p);
String s = req.uriPath;
int len = s.length();
boolean need_decode;
// Scan the string to see if the string requires any conversion.
for (int i = 0; i < len; i++) {
char c = s.charAt(i);
if (c == '%' || c > 0x7F) {
try {
// TODO: Correct this. URLDecoder is broken for path (upto
// JDK1.6): it converts'+' to ' ', which should
// be done only for the query part of the url.
req.uriPath = URLDecoder.decode(req.uriPath, "UTF-8");
break;
} catch (UnsupportedEncodingException ignore){}
}
}
}
break;
case 5:
// line 72 "HttpRequestParser.rl"
{
req.queryStringRange = encodeRange(query_start, p);
}
break;
case 6:
// line 76 "HttpRequestParser.rl"
{
req.uriFragmentRange = encodeRange(mark, p);
}
break;
case 7:
// line 80 "HttpRequestParser.rl"
{
req.versionRange = encodeRange(mark, p);
}
break;
case 8:
// line 119 "HttpRequestParser.rl"
{req.method = "GET";}
break;
case 9:
// line 120 "HttpRequestParser.rl"
{req.method = "POST";}
break;
case 10:
// line 121 "HttpRequestParser.rl"
{req.method = "DELETE";}
break;
case 11:
// line 122 "HttpRequestParser.rl"
{req.method = "HEAD";}
break;
case 12:
// line 123 "HttpRequestParser.rl"
{req.method = "PUT";}
break;
case 13:
// line 124 "HttpRequestParser.rl"
{req.method = "OPTIONS";}
break;
// line 394 "HttpRequestParser.java"
}
}
}
case 2:
if ( cs == 0 ) {
_goto_targ = 5;
continue _goto;
}
if ( ++p != pe ) {
_goto_targ = 1;
continue _goto;
}
case 4:
case 5:
}
break; }
}
// line 159 "HttpRequestParser.rl"
if (cs == http_parser_error) {
throw new IOException("Malformed HTTP Header. p = " + p +", cs = " + cs);
}
}
/**
* encode the start pos and length as ints;
*/
public static int encodeRange(int start, int end) {
return (start << 16) + end ;
}
// line 429 "HttpRequestParser.java"
private static byte[] init__http_keywords_actions_0()
{
return new byte [] {
0, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, 1,
5, 1, 6, 1, 7, 1, 8, 1, 9, 1, 10, 1,
11, 1, 12, 1, 13, 1, 14, 1, 15, 1, 16, 1,
17, 1, 18, 1, 19, 1, 20, 1, 21, 1, 22, 1,
23, 1, 24, 1, 25, 1, 26, 1, 27, 1, 28, 1,
29, 1, 30, 1, 31, 1, 32, 1, 33, 1, 34, 1,
35, 1, 36, 1, 37, 1, 38, 1, 39, 1, 40, 1,
41, 1, 42, 1, 43, 1, 44, 1, 45, 1, 46, 1,
47, 1, 48, 1, 49, 1, 50
};
}
private static final byte _http_keywords_actions[] = init__http_keywords_actions_0();
private static short[] init__http_keywords_key_offsets_0()
{
return new short [] {
0, 0, 8, 10, 12, 14, 16, 24, 26, 28, 30, 32,
34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56,
58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80,
82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104,
108, 110, 112, 114, 115, 117, 119, 121, 123, 125, 127, 129,
131, 135, 137, 139, 141, 143, 145, 147, 149, 151, 153, 154,
164, 166, 168, 170, 172, 174, 176, 178, 184, 186, 188, 190,
192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214,
216, 218, 219, 221, 223, 225, 227, 229, 231, 233, 235, 237,
239, 243, 245, 247, 249, 253, 255, 257, 259, 261, 263, 265,
267, 269, 271, 273, 275, 277, 278, 286, 290, 292, 294, 296,
298, 300, 302, 304, 306, 308, 309, 311, 313, 315, 317, 319,
321, 323, 325, 326, 328, 330, 332, 334, 336, 338, 340, 342,
344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 363, 365,
367, 369, 371, 373, 377, 379, 381, 382, 384, 386, 388, 390,
392, 394, 396, 398, 400, 402, 404, 406, 408, 410, 412, 414,
415, 417, 419, 421, 423, 425, 427, 429, 431, 433, 437, 439,
441, 443, 445, 447, 448, 450, 452, 454, 456, 460, 462, 464,
466, 468, 470, 472, 474, 476, 478, 480, 482, 484, 486, 488,
490, 494, 496, 498, 500, 504, 506, 508, 510, 512, 514, 516,
517, 519, 521, 523, 525, 527, 529, 531, 533, 535, 537, 541,
543, 547, 549, 551, 553, 555, 557, 559, 561, 562, 564, 566,
568, 570, 572, 574, 576, 578, 582, 584, 586, 588, 590, 592,
594, 596, 597, 599, 601, 603, 605, 607, 611, 613, 615, 617,
621, 623, 625, 627, 629, 631, 633, 634, 636, 638, 640, 642,
644, 646, 648, 650, 652, 654, 656, 658, 690
};
}
private static final short _http_keywords_key_offsets[] = init__http_keywords_key_offsets_0();
private static char[] init__http_keywords_trans_keys_0()
{
return new char [] {
67, 71, 76, 85, 99, 103, 108, 117, 67, 99, 69, 101,
80, 112, 84, 116, 67, 69, 76, 82, 99, 101, 108, 114,
72, 104, 65, 97, 82, 114, 83, 115, 69, 101, 84, 116,
78, 110, 67, 99, 79, 111, 68, 100, 73, 105, 78, 110,
71, 103, 65, 97, 78, 110, 71, 103, 85, 117, 65, 97,
71, 103, 69, 101, 65, 97, 78, 110, 71, 103, 69, 101,
83, 115, 69, 101, 76, 108, 79, 111, 87, 119, 84, 116,
72, 104, 79, 111, 82, 114, 73, 105, 90, 122, 65, 97,
84, 116, 73, 105, 79, 111, 78, 110, 65, 79, 97, 111,
67, 99, 72, 104, 69, 101, 45, 67, 99, 79, 111, 78,
110, 84, 116, 82, 114, 79, 111, 76, 108, 78, 110, 78,
84, 110, 116, 69, 101, 67, 99, 84, 116, 73, 105, 79,
111, 78, 110, 69, 101, 78, 110, 84, 116, 45, 69, 76,
77, 82, 84, 101, 108, 109, 114, 116, 78, 110, 67, 99,
79, 111, 68, 100, 73, 105, 78, 110, 71, 103, 65, 69,
79, 97, 101, 111, 78, 110, 71, 103, 85, 117, 65, 97,
71, 103, 69, 101, 78, 110, 71, 103, 84, 116, 72, 104,
67, 99, 65, 97, 84, 116, 73, 105, 79, 111, 78, 110,
68, 100, 53, 65, 97, 78, 110, 71, 103, 69, 101, 89,
121, 80, 112, 69, 101, 65, 97, 84, 116, 69, 101, 84,
88, 116, 120, 65, 97, 71, 103, 80, 112, 69, 73, 101,
105, 67, 99, 84, 116, 82, 114, 69, 101, 83, 115, 82,
114, 79, 111, 77, 109, 79, 111, 83, 115, 84, 116, 70,
102, 45, 77, 78, 82, 85, 109, 110, 114, 117, 65, 79,
97, 111, 84, 116, 67, 99, 72, 104, 68, 100, 73, 105,
70, 102, 73, 105, 69, 101, 68, 100, 45, 83, 115, 73,
105, 78, 110, 67, 99, 69, 101, 79, 111, 78, 110, 69,
101, 45, 77, 109, 65, 97, 84, 116, 67, 99, 72, 104,
65, 97, 78, 110, 71, 103, 69, 101, 78, 110, 77, 109,
79, 111, 68, 100, 73, 105, 70, 102, 73, 105, 69, 101,
68, 100, 45, 83, 115, 73, 105, 78, 110, 67, 99, 69,
101, 65, 79, 97, 111, 83, 115, 84, 116, 45, 77, 109,
79, 111, 68, 100, 73, 105, 70, 102, 73, 105, 69, 101,
68, 100, 67, 99, 65, 97, 84, 116, 73, 105, 79, 111,
78, 110, 65, 97, 88, 120, 45, 70, 102, 79, 111, 82,
114, 87, 119, 65, 97, 82, 114, 68, 100, 83, 115, 82,
114, 65, 79, 97, 111, 71, 103, 77, 109, 65, 97, 88,
120, 89, 121, 45, 65, 97, 85, 117, 84, 116, 72, 104,
69, 79, 101, 111, 78, 110, 84, 116, 73, 105, 67, 99,
65, 97, 84, 116, 69, 101, 82, 114, 73, 105, 90, 122,
65, 97, 84, 116, 73, 105, 79, 111, 78, 110, 65, 69,
97, 101, 78, 110, 71, 103, 69, 101, 70, 84, 102, 116,
69, 101, 82, 114, 69, 101, 82, 114, 82, 114, 89, 121,
45, 65, 97, 70, 102, 84, 116, 69, 101, 82, 114, 69,
101, 82, 114, 86, 118, 69, 101, 82, 114, 69, 82, 101,
114, 65, 97, 73, 78, 105, 110, 76, 108, 69, 101, 82,
114, 83, 115, 70, 102, 69, 101, 82, 114, 45, 69, 101,
78, 110, 67, 99, 79, 111, 68, 100, 73, 105, 78, 110,
71, 103, 80, 83, 112, 115, 71, 103, 82, 114, 65, 97,
68, 100, 69, 101, 69, 101, 82, 114, 45, 65, 97, 71,
103, 69, 101, 78, 110, 84, 116, 65, 73, 97, 105, 82,
114, 89, 121, 65, 97, 65, 87, 97, 119, 82, 114, 78,
110, 73, 105, 78, 110, 71, 103, 87, 119, 45, 65, 97,
85, 117, 84, 116, 72, 104, 69, 101, 78, 110, 84, 116,
73, 105, 67, 99, 65, 97, 84, 116, 69, 101, 65, 67,
68, 69, 70, 72, 73, 76, 77, 80, 82, 83, 84, 85,
86, 87, 97, 99, 100, 101, 102, 104, 105, 108, 109, 112,
114, 115, 116, 117, 118, 119, 45, 0
};
}
private static final char _http_keywords_trans_keys[] = init__http_keywords_trans_keys_0();
private static byte[] init__http_keywords_single_lengths_0()
{
return new byte [] {
0, 8, 2, 2, 2, 2, 8, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4,
2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2,
4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 10,
2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 1, 8, 4, 2, 2, 2, 2,
2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2,
2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2,
2, 2, 2, 4, 2, 2, 1, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1,
2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2,
2, 2, 2, 1, 2, 2, 2, 2, 4, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 1,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2,
4, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2,
2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2,
2, 1, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4,
2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 32, 1
};
}
private static final byte _http_keywords_single_lengths[] = init__http_keywords_single_lengths_0();
private static byte[] init__http_keywords_range_lengths_0()
{
return new byte [] {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0
};
}
private static final byte _http_keywords_range_lengths[] = init__http_keywords_range_lengths_0();
private static short[] init__http_keywords_index_offsets_0()
{
return new short [] {
0, 0, 9, 12, 15, 18, 21, 30, 33, 36, 39, 42,
45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78,
81, 84, 87, 90, 93, 96, 99, 102, 105, 108, 111, 114,
117, 120, 123, 126, 129, 132, 135, 138, 141, 144, 147, 150,
155, 158, 161, 164, 166, 169, 172, 175, 178, 181, 184, 187,
190, 195, 198, 201, 204, 207, 210, 213, 216, 219, 222, 224,
235, 238, 241, 244, 247, 250, 253, 256, 263, 266, 269, 272,
275, 278, 281, 284, 287, 290, 293, 296, 299, 302, 305, 308,
311, 314, 316, 319, 322, 325, 328, 331, 334, 337, 340, 343,
346, 351, 354, 357, 360, 365, 368, 371, 374, 377, 380, 383,
386, 389, 392, 395, 398, 401, 403, 412, 417, 420, 423, 426,
429, 432, 435, 438, 441, 444, 446, 449, 452, 455, 458, 461,
464, 467, 470, 472, 475, 478, 481, 484, 487, 490, 493, 496,
499, 502, 505, 508, 511, 514, 517, 520, 523, 526, 528, 531,
534, 537, 540, 543, 548, 551, 554, 556, 559, 562, 565, 568,
571, 574, 577, 580, 583, 586, 589, 592, 595, 598, 601, 604,
606, 609, 612, 615, 618, 621, 624, 627, 630, 633, 638, 641,
644, 647, 650, 653, 655, 658, 661, 664, 667, 672, 675, 678,
681, 684, 687, 690, 693, 696, 699, 702, 705, 708, 711, 714,
717, 722, 725, 728, 731, 736, 739, 742, 745, 748, 751, 754,
756, 759, 762, 765, 768, 771, 774, 777, 780, 783, 786, 791,
794, 799, 802, 805, 808, 811, 814, 817, 820, 822, 825, 828,
831, 834, 837, 840, 843, 846, 851, 854, 857, 860, 863, 866,
869, 872, 874, 877, 880, 883, 886, 889, 894, 897, 900, 903,
908, 911, 914, 917, 920, 923, 926, 928, 931, 934, 937, 940,
943, 946, 949, 952, 955, 958, 961, 964, 997
};
}
private static final short _http_keywords_index_offsets[] = init__http_keywords_index_offsets_0();
private static short[] init__http_keywords_trans_targs_0()
{
return new short [] {
2, 32, 33, 36, 2, 32, 33, 36, 0, 3, 3, 0,
4, 4, 0, 5, 5, 0, 308, 308, 0, 7, 13, 20,
27, 7, 13, 20, 27, 307, 8, 8, 307, 9, 9, 307,
10, 10, 307, 11, 11, 307, 12, 12, 307, 307, 307, 307,
14, 14, 307, 15, 15, 307, 16, 16, 307, 17, 17, 307,
18, 18, 307, 19, 19, 307, 307, 307, 307, 21, 21, 307,
22, 22, 307, 23, 23, 307, 24, 24, 307, 25, 25, 307,
26, 26, 307, 307, 307, 307, 28, 28, 307, 29, 29, 307,
30, 30, 307, 31, 31, 307, 307, 307, 307, 307, 307, 0,
34, 34, 0, 35, 35, 0, 307, 307, 0, 37, 37, 0,
38, 38, 0, 39, 39, 0, 40, 40, 0, 41, 41, 0,
42, 42, 0, 43, 43, 0, 44, 44, 0, 45, 45, 0,
46, 46, 0, 307, 307, 0, 48, 59, 48, 59, 0, 49,
49, 0, 50, 50, 0, 51, 51, 0, 52, 0, 53, 53,
0, 54, 54, 0, 55, 55, 0, 56, 56, 0, 57, 57,
0, 58, 58, 0, 307, 307, 0, 60, 60, 0, 61, 67,
61, 67, 0, 62, 62, 0, 63, 63, 0, 64, 64, 0,
65, 65, 0, 66, 66, 0, 307, 307, 0, 68, 68, 0,
69, 69, 0, 70, 70, 0, 71, 0, 72, 79, 96, 98,
102, 72, 79, 96, 98, 102, 0, 73, 73, 0, 74, 74,
0, 75, 75, 0, 76, 76, 0, 77, 77, 0, 78, 78,
0, 307, 307, 0, 80, 86, 90, 80, 86, 90, 0, 81,
81, 0, 82, 82, 0, 83, 83, 0, 84, 84, 0, 85,
85, 0, 307, 307, 0, 87, 87, 0, 88, 88, 0, 89,
89, 0, 307, 307, 0, 91, 91, 0, 92, 92, 0, 93,
93, 0, 94, 94, 0, 95, 95, 0, 307, 307, 0, 97,
97, 0, 307, 0, 99, 99, 0, 100, 100, 0, 101, 101,
0, 307, 307, 0, 103, 103, 0, 104, 104, 0, 307, 307,
0, 106, 106, 0, 107, 107, 0, 307, 307, 0, 109, 111,
109, 111, 0, 110, 110, 0, 307, 307, 0, 112, 112, 0,
113, 115, 113, 115, 0, 114, 114, 0, 307, 307, 0, 116,
116, 0, 117, 117, 0, 307, 307, 0, 119, 119, 0, 120,
120, 0, 307, 307, 0, 122, 122, 0, 123, 123, 0, 307,
307, 0, 125, 125, 0, 126, 0, 127, 143, 152, 156, 127,
143, 152, 156, 0, 128, 131, 128, 131, 0, 129, 129, 0,
130, 130, 0, 307, 307, 0, 132, 132, 0, 133, 133, 0,
134, 134, 0, 135, 135, 0, 136, 136, 0, 137, 137, 0,
138, 0, 139, 139, 0, 140, 140, 0, 141, 141, 0, 142,
142, 0, 307, 307, 0, 144, 144, 0, 145, 145, 0, 146,
146, 0, 147, 0, 148, 148, 0, 149, 149, 0, 150, 150,
0, 151, 151, 0, 307, 307, 0, 153, 153, 0, 154, 154,
0, 155, 155, 0, 307, 307, 0, 157, 157, 0, 158, 158,
0, 159, 159, 0, 160, 160, 0, 161, 161, 0, 162, 162,
0, 163, 163, 0, 164, 164, 0, 165, 165, 0, 166, 0,
167, 167, 0, 168, 168, 0, 169, 169, 0, 170, 170, 0,
307, 307, 0, 172, 183, 172, 183, 0, 173, 173, 0, 174,
174, 0, 175, 0, 176, 176, 0, 177, 177, 0, 178, 178,
0, 179, 179, 0, 180, 180, 0, 181, 181, 0, 182, 182,
0, 307, 307, 0, 184, 184, 0, 185, 185, 0, 186, 186,
0, 187, 187, 0, 188, 188, 0, 307, 307, 0, 190, 190,
0, 191, 191, 0, 192, 0, 193, 193, 0, 194, 194, 0,
195, 195, 0, 196, 196, 0, 197, 197, 0, 198, 198, 0,
199, 199, 0, 307, 307, 0, 201, 201, 0, 202, 205, 202,
205, 0, 203, 203, 0, 204, 204, 0, 307, 307, 0, 206,
206, 0, 207, 207, 0, 208, 0, 209, 209, 0, 210, 210,
0, 211, 211, 0, 212, 212, 0, 213, 220, 213, 220, 0,
214, 214, 0, 215, 215, 0, 216, 216, 0, 217, 217, 0,
218, 218, 0, 219, 219, 0, 307, 307, 0, 221, 221, 0,
222, 222, 0, 223, 223, 0, 224, 224, 0, 225, 225, 0,
226, 226, 0, 227, 227, 0, 307, 307, 0, 229, 232, 229,
232, 0, 230, 230, 0, 231, 231, 0, 307, 307, 0, 233,
237, 233, 237, 0, 234, 234, 0, 235, 235, 0, 236, 236,
0, 307, 307, 0, 238, 238, 0, 239, 239, 0, 240, 0,
241, 241, 0, 242, 242, 0, 243, 243, 0, 244, 244, 0,
307, 307, 0, 246, 246, 0, 247, 247, 0, 248, 248, 0,
249, 249, 0, 307, 307, 0, 307, 251, 307, 251, 0, 252,
252, 0, 253, 256, 253, 256, 0, 254, 254, 0, 255, 255,
0, 307, 307, 0, 257, 257, 0, 258, 258, 0, 259, 259,
0, 260, 260, 0, 261, 0, 262, 262, 0, 263, 263, 0,
264, 264, 0, 265, 265, 0, 266, 266, 0, 267, 267, 0,
268, 268, 0, 307, 307, 0, 270, 275, 270, 275, 0, 271,
271, 0, 272, 272, 0, 273, 273, 0, 274, 274, 0, 307,
307, 0, 276, 276, 0, 277, 277, 0, 278, 0, 279, 279,
0, 280, 280, 0, 281, 281, 0, 282, 282, 0, 307, 307,
0, 284, 286, 284, 286, 0, 285, 285, 0, 307, 307, 0,
307, 307, 0, 288, 293, 288, 293, 0, 289, 289, 0, 290,
290, 0, 291, 291, 0, 292, 292, 0, 307, 307, 0, 294,
294, 0, 295, 0, 296, 296, 0, 297, 297, 0, 298, 298,
0, 299, 299, 0, 300, 300, 0, 301, 301, 0, 302, 302,
0, 303, 303, 0, 304, 304, 0, 305, 305, 0, 306, 306,
0, 307, 307, 0, 1, 47, 105, 108, 118, 121, 124, 171,
189, 200, 228, 245, 250, 269, 283, 287, 1, 47, 105, 108,
118, 121, 124, 171, 189, 200, 228, 245, 250, 269, 283, 287,
0, 6, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
307, 307, 307, 307, 307, 307, 0
};
}
private static final short _http_keywords_trans_targs[] = init__http_keywords_trans_targs_0();
private static byte[] init__http_keywords_trans_actions_0()
{
return new byte [] {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 5, 5, 0, 0, 0, 0,
0, 0, 0, 0, 0, 101, 0, 0, 101, 0, 0, 101,
0, 0, 101, 0, 0, 101, 0, 0, 101, 7, 7, 101,
0, 0, 101, 0, 0, 101, 0, 0, 101, 0, 0, 101,
0, 0, 101, 0, 0, 101, 9, 9, 101, 0, 0, 101,
0, 0, 101, 0, 0, 101, 0, 0, 101, 0, 0, 101,
0, 0, 101, 11, 11, 101, 0, 0, 101, 0, 0, 101,
0, 0, 101, 0, 0, 101, 13, 13, 101, 15, 15, 0,
0, 0, 0, 0, 0, 0, 17, 17, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 19, 19, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 21, 21, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 23, 23, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 25, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 27, 27, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 29, 29, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 31, 31, 0, 0,
0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 35, 35, 0, 0, 0, 0, 0, 0, 0, 37, 37,
0, 0, 0, 0, 0, 0, 0, 39, 39, 0, 0, 0,
0, 0, 0, 0, 0, 0, 41, 41, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 43, 43, 0, 0,
0, 0, 0, 0, 0, 45, 45, 0, 0, 0, 0, 0,
0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 49,
49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 51, 51, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 53, 53, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 55, 55, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 57, 57, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
59, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 61, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 63, 63, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 65, 65, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 67, 67, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 69, 69, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 71, 71, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 73, 73, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 75, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 79, 79, 0, 81, 0, 81, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 83, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 85, 85, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,
87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 89,
0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 91, 0,
93, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 95, 95, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 97, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 99, 101, 101, 101, 101, 101, 101, 101, 101, 101,
101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
101, 101, 101, 101, 101, 99, 0
};
}
private static final byte _http_keywords_trans_actions[] = init__http_keywords_trans_actions_0();
private static byte[] init__http_keywords_to_state_actions_0()
{
return new byte [] {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1, 0
};
}
private static final byte _http_keywords_to_state_actions[] = init__http_keywords_to_state_actions_0();
private static byte[] init__http_keywords_from_state_actions_0()
{
return new byte [] {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 3, 0
};
}
private static final byte _http_keywords_from_state_actions[] = init__http_keywords_from_state_actions_0();
private static short[] init__http_keywords_eof_trans_0()
{
return new short [] {
0, 0, 0, 0, 0, 0, 1025, 1025, 1025, 1025, 1025, 1025,
1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025,
1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 1026
};
}
private static final short _http_keywords_eof_trans[] = init__http_keywords_eof_trans_0();
static final int http_keywords_start = 307;
static final int http_keywords_first_final = 307;
static final int http_keywords_error = 0;
static final int http_keywords_en_main = 307;
// line 226 "HttpRequestParser.rl"
@SuppressWarnings("unused")
public static String kw_lookup(byte[] data, int start, int len) {
// String req = null;
int ts, te, act;
// int wb = 0;
int p = start;
int pe = start + len;
int eof = pe;
int cs;
String kw = null;
// line 972 "HttpRequestParser.java"
{
cs = http_keywords_start;
ts = -1;
te = -1;
act = 0;
}
// line 240 "HttpRequestParser.rl"
// line 982 "HttpRequestParser.java"
{
int _klen;
int _trans = 0;
int _acts;
int _nacts;
int _keys;
int _goto_targ = 0;
_goto: while (true) {
switch ( _goto_targ ) {
case 0:
if ( p == pe ) {
_goto_targ = 4;
continue _goto;
}
if ( cs == 0 ) {
_goto_targ = 5;
continue _goto;
}
case 1:
_acts = _http_keywords_from_state_actions[cs];
_nacts = (int) _http_keywords_actions[_acts++];
while ( _nacts-- > 0 ) {
switch ( _http_keywords_actions[_acts++] ) {
case 1:
// line 1 "HttpRequestParser.rl"
{ts = p;}
break;
// line 1011 "HttpRequestParser.java"
}
}
_match: do {
_keys = _http_keywords_key_offsets[cs];
_trans = _http_keywords_index_offsets[cs];
_klen = _http_keywords_single_lengths[cs];
if ( _klen > 0 ) {
int _lower = _keys;
int _mid;
int _upper = _keys + _klen - 1;
while (true) {
if ( _upper < _lower )
break;
_mid = _lower + ((_upper-_lower) >> 1);
if ( data[p] < _http_keywords_trans_keys[_mid] )
_upper = _mid - 1;
else if ( data[p] > _http_keywords_trans_keys[_mid] )
_lower = _mid + 1;
else {
_trans += (_mid - _keys);
break _match;
}
}
_keys += _klen;
_trans += _klen;
}
_klen = _http_keywords_range_lengths[cs];
if ( _klen > 0 ) {
int _lower = _keys;
int _mid;
int _upper = _keys + (_klen<<1) - 2;
while (true) {
if ( _upper < _lower )
break;
_mid = _lower + (((_upper-_lower) >> 1) & ~1);
if ( data[p] < _http_keywords_trans_keys[_mid] )
_upper = _mid - 2;
else if ( data[p] > _http_keywords_trans_keys[_mid+1] )
_lower = _mid + 2;
else {
_trans += ((_mid - _keys)>>1);
break _match;
}
}
_trans += _klen;
}
} while (false);
case 3:
cs = _http_keywords_trans_targs[_trans];
if ( _http_keywords_trans_actions[_trans] != 0 ) {
_acts = _http_keywords_trans_actions[_trans];
_nacts = (int) _http_keywords_actions[_acts++];
while ( _nacts-- > 0 )
{
switch ( _http_keywords_actions[_acts++] )
{
case 2:
// line 1 "HttpRequestParser.rl"
{te = p+1;}
break;
case 3:
// line 177 "HttpRequestParser.rl"
{te = p+1;{ kw = "Accept-Charset";}}
break;
case 4:
// line 178 "HttpRequestParser.rl"
{te = p+1;{ kw = "Accept-Encoding";}}
break;
case 5:
// line 179 "HttpRequestParser.rl"
{te = p+1;{ kw = "Accept-Language";}}
break;
case 6:
// line 180 "HttpRequestParser.rl"
{te = p+1;{ kw = "Accept-Ranges";}}
break;
case 7:
// line 181 "HttpRequestParser.rl"
{te = p+1;{ kw = "Age";}}
break;
case 8:
// line 182 "HttpRequestParser.rl"
{te = p+1;{ kw = "Allow";}}
break;
case 9:
// line 183 "HttpRequestParser.rl"
{te = p+1;{ kw = "Authorization";}}
break;
case 10:
// line 184 "HttpRequestParser.rl"
{te = p+1;{ kw = "Cache-Control";}}
break;
case 11:
// line 185 "HttpRequestParser.rl"
{te = p+1;{ kw = "Connection";}}
break;
case 12:
// line 186 "HttpRequestParser.rl"
{te = p+1;{ kw = "Content-Encoding";}}
break;
case 13:
// line 187 "HttpRequestParser.rl"
{te = p+1;{ kw = "Content-Language";}}
break;
case 14:
// line 188 "HttpRequestParser.rl"
{te = p+1;{ kw = "Content-Length";}}
break;
case 15:
// line 189 "HttpRequestParser.rl"
{te = p+1;{ kw = "Content-Location";}}
break;
case 16:
// line 190 "HttpRequestParser.rl"
{te = p+1;{ kw = "Content-MD5";}}
break;
case 17:
// line 191 "HttpRequestParser.rl"
{te = p+1;{ kw = "Content-Range";}}
break;
case 18:
// line 192 "HttpRequestParser.rl"
{te = p+1;{ kw = "Content-Type";}}
break;
case 19:
// line 193 "HttpRequestParser.rl"
{te = p+1;{ kw = "Date";}}
break;
case 20:
// line 194 "HttpRequestParser.rl"
{te = p+1;{ kw = "ETag";}}
break;
case 21:
// line 195 "HttpRequestParser.rl"
{te = p+1;{ kw = "Expect";}}
break;
case 22:
// line 196 "HttpRequestParser.rl"
{te = p+1;{ kw = "Expires";}}
break;
case 23:
// line 197 "HttpRequestParser.rl"
{te = p+1;{ kw = "From";}}
break;
case 24:
// line 198 "HttpRequestParser.rl"
{te = p+1;{ kw = "Host";}}
break;
case 25:
// line 199 "HttpRequestParser.rl"
{te = p+1;{ kw = "If-Match";}}
break;
case 26:
// line 200 "HttpRequestParser.rl"
{te = p+1;{ kw = "If-Modified-Since";}}
break;
case 27:
// line 201 "HttpRequestParser.rl"
{te = p+1;{ kw = "If-None-Match";}}
break;
case 28:
// line 202 "HttpRequestParser.rl"
{te = p+1;{ kw = "If-Range";}}
break;
case 29:
// line 203 "HttpRequestParser.rl"
{te = p+1;{ kw = "If-Unmodified-Since";}}
break;
case 30:
// line 204 "HttpRequestParser.rl"
{te = p+1;{ kw = "Last-Modified";}}
break;
case 31:
// line 205 "HttpRequestParser.rl"
{te = p+1;{ kw = "Location";}}
break;
case 32:
// line 206 "HttpRequestParser.rl"
{te = p+1;{ kw = "Max-Forwards";}}
break;
case 33:
// line 207 "HttpRequestParser.rl"
{te = p+1;{ kw = "Pragma";}}
break;
case 34:
// line 208 "HttpRequestParser.rl"
{te = p+1;{ kw = "Proxy-Authenticate";}}
break;
case 35:
// line 209 "HttpRequestParser.rl"
{te = p+1;{ kw = "Proxy-Authorization";}}
break;
case 36:
// line 210 "HttpRequestParser.rl"
{te = p+1;{ kw = "Range";}}
break;
case 37:
// line 211 "HttpRequestParser.rl"
{te = p+1;{ kw = "Referer";}}
break;
case 38:
// line 212 "HttpRequestParser.rl"
{te = p+1;{ kw = "Retry-After";}}
break;
case 39:
// line 213 "HttpRequestParser.rl"
{te = p+1;{ kw = "Server";}}
break;
case 40:
// line 214 "HttpRequestParser.rl"
{te = p+1;{ kw = "TE";}}
break;
case 41:
// line 215 "HttpRequestParser.rl"
{te = p+1;{ kw = "Trailer";}}
break;
case 42:
// line 216 "HttpRequestParser.rl"
{te = p+1;{ kw = "Transfer-Encoding";}}
break;
case 43:
// line 217 "HttpRequestParser.rl"
{te = p+1;{ kw = "Upgrade";}}
break;
case 44:
// line 218 "HttpRequestParser.rl"
{te = p+1;{ kw = "User-Agent";}}
break;
case 45:
// line 219 "HttpRequestParser.rl"
{te = p+1;{ kw = "Vary";}}
break;
case 46:
// line 220 "HttpRequestParser.rl"
{te = p+1;{ kw = "Via";}}
break;
case 47:
// line 221 "HttpRequestParser.rl"
{te = p+1;{ kw = "Warning";}}
break;
case 48:
// line 222 "HttpRequestParser.rl"
{te = p+1;{ kw = "WWW-Authenticate";}}
break;
case 49:
// line 176 "HttpRequestParser.rl"
{te = p;p--;{ kw = "Accept";}}
break;
case 50:
// line 176 "HttpRequestParser.rl"
{{p = ((te))-1;}{ kw = "Accept";}}
break;
// line 1270 "HttpRequestParser.java"
}
}
}
case 2:
_acts = _http_keywords_to_state_actions[cs];
_nacts = (int) _http_keywords_actions[_acts++];
while ( _nacts-- > 0 ) {
switch ( _http_keywords_actions[_acts++] ) {
case 0:
// line 1 "HttpRequestParser.rl"
{ts = -1;}
break;
// line 1284 "HttpRequestParser.java"
}
}
if ( cs == 0 ) {
_goto_targ = 5;
continue _goto;
}
if ( ++p != pe ) {
_goto_targ = 1;
continue _goto;
}
case 4:
if ( p == eof )
{
if ( _http_keywords_eof_trans[cs] > 0 ) {
_trans = _http_keywords_eof_trans[cs] - 1;
_goto_targ = 3;
continue _goto;
}
}
case 5:
}
break; }
}
// line 241 "HttpRequestParser.rl"
return kw;
}
// line 1317 "HttpRequestParser.java"
private static byte[] init__http_date_actions_0()
{
return new byte [] {
0, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, 1,
5, 1, 6, 1, 7, 1, 8, 1, 9, 1, 10, 1,
11, 1, 12, 1, 13, 1, 14, 1, 15, 1, 16
};
}
private static final byte _http_date_actions[] = init__http_date_actions_0();
private static short[] init__http_date_key_offsets_0()
{
return new short [] {
0, 0, 5, 6, 7, 9, 18, 20, 21, 22, 25, 28,
31, 34, 36, 39, 41, 44, 47, 48, 49, 50, 51, 52,
54, 55, 57, 58, 60, 61, 62, 63, 64, 65, 66, 67,
70, 74, 83, 85, 86, 87, 90, 93, 96, 99, 101, 104,
106, 109, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121,
123, 124, 126, 127, 128, 129, 130, 131, 132, 140, 142, 143,
144, 146, 147, 148, 149, 150, 151, 153, 154, 156, 157, 159,
160, 161, 162, 163, 164, 165, 166, 167, 169, 170, 172, 173,
174, 175, 176, 178
};
}
private static final short _http_date_key_offsets[] = init__http_date_key_offsets_0();
private static char[] init__http_date_trans_keys_0()
{
return new char [] {
70, 77, 83, 84, 87, 114, 105, 32, 44, 32, 65, 68,
70, 74, 77, 78, 79, 83, 112, 117, 114, 32, 32, 48,
57, 32, 48, 57, 32, 48, 57, 58, 48, 57, 48, 57,
58, 48, 57, 48, 57, 32, 48, 57, 32, 48, 57, 103,
101, 99, 101, 98, 97, 117, 110, 108, 110, 97, 114, 121,
111, 118, 99, 116, 101, 112, 32, 32, 48, 57, 32, 45,
48, 57, 32, 65, 68, 70, 74, 77, 78, 79, 83, 112,
117, 114, 32, 32, 48, 57, 32, 48, 57, 32, 48, 57,
58, 48, 57, 48, 57, 58, 48, 57, 48, 57, 32, 48,
57, 32, 71, 77, 84, 103, 101, 99, 101, 98, 97, 117,
110, 108, 110, 97, 114, 121, 111, 118, 99, 116, 101, 112,
65, 68, 70, 74, 77, 78, 79, 83, 112, 117, 114, 45,
48, 57, 103, 101, 99, 101, 98, 97, 117, 110, 108, 110,
97, 114, 121, 111, 118, 99, 116, 101, 112, 111, 110, 97,
117, 116, 104, 117, 117, 101, 101, 100, 48, 57, 0
};
}
private static final char _http_date_trans_keys[] = init__http_date_trans_keys_0();
private static byte[] init__http_date_single_lengths_0()
{
return new byte [] {
0, 5, 1, 1, 2, 9, 2, 1, 1, 1, 1, 1,
1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 2,
1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1,
2, 9, 2, 1, 1, 1, 1, 1, 1, 0, 1, 0,
1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2,
1, 2, 1, 1, 1, 1, 1, 1, 8, 2, 1, 1,
0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1,
1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1,
1, 1, 0, 0
};
}
private static final byte _http_date_single_lengths[] = init__http_date_single_lengths_0();
private static byte[] init__http_date_range_lengths_0()
{
return new byte [] {
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 0
};
}
private static final byte _http_date_range_lengths[] = init__http_date_range_lengths_0();
private static short[] init__http_date_index_offsets_0()
{
return new short [] {
0, 0, 6, 8, 10, 13, 23, 26, 28, 30, 33, 36,
39, 42, 44, 47, 49, 52, 55, 57, 59, 61, 63, 65,
68, 70, 73, 75, 78, 80, 82, 84, 86, 88, 90, 92,
95, 99, 109, 112, 114, 116, 119, 122, 125, 128, 130, 133,
135, 138, 141, 143, 145, 147, 149, 151, 153, 155, 158, 160,
163, 165, 168, 170, 172, 174, 176, 178, 180, 189, 192, 194,
196, 198, 200, 202, 204, 206, 208, 211, 213, 216, 218, 221,
223, 225, 227, 229, 231, 233, 235, 237, 240, 242, 245, 247,
249, 251, 253, 255
};
}
private static final short _http_date_index_offsets[] = init__http_date_index_offsets_0();
private static byte[] init__http_date_trans_targs_0()
{
return new byte [] {
2, 89, 91, 93, 96, 0, 3, 0, 4, 0, 5, 34,
0, 5, 6, 19, 21, 23, 26, 28, 30, 32, 0, 7,
18, 0, 8, 0, 9, 0, 9, 10, 0, 11, 10, 0,
11, 12, 0, 13, 12, 0, 14, 0, 15, 14, 0, 16,
0, 17, 16, 0, 17, 98, 0, 8, 0, 20, 0, 8,
0, 22, 0, 8, 0, 24, 25, 0, 8, 0, 8, 8,
0, 27, 0, 8, 8, 0, 29, 0, 8, 0, 31, 0,
8, 0, 33, 0, 8, 0, 35, 0, 35, 36, 0, 37,
68, 36, 0, 37, 38, 53, 55, 57, 60, 62, 64, 66,
0, 39, 52, 0, 40, 0, 41, 0, 41, 42, 0, 43,
42, 0, 43, 44, 0, 45, 44, 0, 46, 0, 47, 46,
0, 48, 0, 49, 48, 0, 49, 50, 0, 51, 0, 99,
0, 40, 0, 54, 0, 40, 0, 56, 0, 40, 0, 58,
59, 0, 40, 0, 40, 40, 0, 61, 0, 40, 40, 0,
63, 0, 40, 0, 65, 0, 40, 0, 67, 0, 40, 0,
69, 74, 76, 78, 81, 83, 85, 87, 0, 70, 73, 0,
71, 0, 72, 0, 42, 0, 71, 0, 75, 0, 71, 0,
77, 0, 71, 0, 79, 80, 0, 71, 0, 71, 71, 0,
82, 0, 71, 71, 0, 84, 0, 71, 0, 86, 0, 71,
0, 88, 0, 71, 0, 90, 0, 4, 0, 92, 90, 0,
4, 0, 94, 95, 0, 4, 0, 4, 0, 97, 0, 4,
0, 98, 0, 0, 0
};
}
private static final byte _http_date_trans_targs[] = init__http_date_trans_targs_0();
private static byte[] init__http_date_trans_actions_0()
{
return new byte [] {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 17, 0, 0, 0, 0, 1, 0, 0, 1, 0,
0, 5, 0, 0, 5, 0, 7, 0, 0, 7, 0, 9,
0, 0, 9, 0, 0, 3, 0, 25, 0, 0, 0, 33,
0, 0, 0, 13, 0, 0, 0, 0, 11, 0, 23, 21,
0, 0, 0, 15, 19, 0, 0, 0, 31, 0, 0, 0,
29, 0, 0, 0, 27, 0, 0, 0, 0, 1, 0, 0,
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 17, 0, 0, 0, 0, 3, 0, 0,
3, 0, 0, 5, 0, 0, 5, 0, 7, 0, 0, 7,
0, 9, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
0, 25, 0, 0, 0, 33, 0, 0, 0, 13, 0, 0,
0, 0, 11, 0, 23, 21, 0, 0, 0, 15, 19, 0,
0, 0, 31, 0, 0, 0, 29, 0, 0, 0, 27, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
17, 0, 0, 0, 3, 0, 25, 0, 0, 0, 33, 0,
0, 0, 13, 0, 0, 0, 0, 11, 0, 23, 21, 0,
0, 0, 15, 19, 0, 0, 0, 31, 0, 0, 0, 29,
0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 3, 0, 0, 0
};
}
private static final byte _http_date_trans_actions[] = init__http_date_trans_actions_0();
static final int http_date_start = 1;
static final int http_date_first_final = 98;
static final int http_date_error = 0;
static final int http_date_en_main = 1;
// line 285 "HttpRequestParser.rl"
public static TimeZone GMT = TimeZone.getTimeZone("GMT");
public static long parseDate(byte[] data, int pos, int len) {
int p = 0;
int pe = len;
// int eof = pe;
int cs;
// int wkday = 0;
int day = 0, month = 0, year = 0;
int hh = 0, mm = 0, ss = 0;
// line 1510 "HttpRequestParser.java"
{
cs = http_date_start;
}
// line 299 "HttpRequestParser.rl"
// line 1517 "HttpRequestParser.java"
{
int _klen;
int _trans = 0;
int _acts;
int _nacts;
int _keys;
int _goto_targ = 0;
_goto: while (true) {
switch ( _goto_targ ) {
case 0:
if ( p == pe ) {
_goto_targ = 4;
continue _goto;
}
if ( cs == 0 ) {
_goto_targ = 5;
continue _goto;
}
case 1:
_match: do {
_keys = _http_date_key_offsets[cs];
_trans = _http_date_index_offsets[cs];
_klen = _http_date_single_lengths[cs];
if ( _klen > 0 ) {
int _lower = _keys;
int _mid;
int _upper = _keys + _klen - 1;
while (true) {
if ( _upper < _lower )
break;
_mid = _lower + ((_upper-_lower) >> 1);
if ( data[p] < _http_date_trans_keys[_mid] )
_upper = _mid - 1;
else if ( data[p] > _http_date_trans_keys[_mid] )
_lower = _mid + 1;
else {
_trans += (_mid - _keys);
break _match;
}
}
_keys += _klen;
_trans += _klen;
}
_klen = _http_date_range_lengths[cs];
if ( _klen > 0 ) {
int _lower = _keys;
int _mid;
int _upper = _keys + (_klen<<1) - 2;
while (true) {
if ( _upper < _lower )
break;
_mid = _lower + (((_upper-_lower) >> 1) & ~1);
if ( data[p] < _http_date_trans_keys[_mid] )
_upper = _mid - 2;
else if ( data[p] > _http_date_trans_keys[_mid+1] )
_lower = _mid + 2;
else {
_trans += ((_mid - _keys)>>1);
break _match;
}
}
_trans += _klen;
}
} while (false);
cs = _http_date_trans_targs[_trans];
if ( _http_date_trans_actions[_trans] != 0 ) {
_acts = _http_date_trans_actions[_trans];
_nacts = (int) _http_date_actions[_acts++];
while ( _nacts-- > 0 )
{
switch ( _http_date_actions[_acts++] )
{
case 0:
// line 254 "HttpRequestParser.rl"
{day = day * 10 + (data[p] - 48);}
break;
case 1:
// line 255 "HttpRequestParser.rl"
{year = year * 10 + (data[p] - 48);}
break;
case 2:
// line 256 "HttpRequestParser.rl"
{hh = hh * 10 + (data[p] - 48) ;}
break;
case 3:
// line 257 "HttpRequestParser.rl"
{mm = mm * 10 + (data[p] - 48) ;}
break;
case 4:
// line 258 "HttpRequestParser.rl"
{ss = ss * 10 + (data[p] - 48) ;}
break;
case 5:
// line 262 "HttpRequestParser.rl"
{ month = 0;}
break;
case 6:
// line 263 "HttpRequestParser.rl"
{ month = 1;}
break;
case 7:
// line 264 "HttpRequestParser.rl"
{ month = 2;}
break;
case 8:
// line 265 "HttpRequestParser.rl"
{ month = 3;}
break;
case 9:
// line 266 "HttpRequestParser.rl"
{ month = 4;}
break;
case 10:
// line 267 "HttpRequestParser.rl"
{ month = 5;}
break;
case 11:
// line 268 "HttpRequestParser.rl"
{ month = 6;}
break;
case 12:
// line 269 "HttpRequestParser.rl"
{ month = 7;}
break;
case 13:
// line 270 "HttpRequestParser.rl"
{ month = 8;}
break;
case 14:
// line 271 "HttpRequestParser.rl"
{ month = 90;}
break;
case 15:
// line 272 "HttpRequestParser.rl"
{ month = 10;}
break;
case 16:
// line 273 "HttpRequestParser.rl"
{ month = 11;}
break;
// line 1664 "HttpRequestParser.java"
}
}
}
case 2:
if ( cs == 0 ) {
_goto_targ = 5;
continue _goto;
}
if ( ++p != pe ) {
_goto_targ = 1;
continue _goto;
}
case 4:
case 5:
}
break; }
}
// line 300 "HttpRequestParser.rl"
if (year < 100) {year += 1900;}
GregorianCalendar gc = new GregorianCalendar();
gc.set(year, month, day, hh, mm, ss);
gc.setTimeZone(GMT);
return gc.getTimeInMillis();
}
public static String crlf = "\r\n";
public static void main(String args[]) throws Exception {
/// Testing
String s =
"GET /favicon.ico#test HTTP/1.1\r\n" +
"Host: localhost:7262\r\n" +
"User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.10) Gecko/2009042315 Firefox/3.0.10 Ubiquity/0.1.5\r\n" +
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n" +
"Accept-Language: en-us,en;q=0.5\r\n" +
"Accept-Encoding: gzip,deflate\r\n" +
"Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n" +
"Keep-Alive: 300\r\n" +
"Connection: keep-alive\r\n\r\n";
System.out.println("Input Request: (" + s.length() + " bytes)");System.out.println(s);
byte[] data = s.getBytes();
int len = data.length;
System.out.println("=============================================================");
HttpRequest req = new HttpRequest();
req.buffer = ByteBuffer.allocate(2048);
req.buffer.put(data);
initHeader(req, len);
System.out.println(req);
}
}