kilim.http.HttpRequestParser Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of kilim Show documentation
Show all versions of kilim Show documentation
Coroutines, continuations, fibers, actors and message passing for the JVM
// 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);
}
}