public abstract class org.apache.hc.core.http.impl.io.AbstractMessageParser extends java.lang.Object implements org.apache.hc.core.http.io.HttpMessageParser
{
private static final int HEAD_LINE;
private static final int HEADERS;
private final org.apache.hc.core.http.config.Http1Config http1Config;
private final java.util.List headerLines;
private final org.apache.hc.core.util.CharArrayBuffer headLine;
private final org.apache.hc.core.http.message.LineParser lineParser;
private int state;
private org.apache.hc.core.http.HttpMessage message;
public void <init>(org.apache.hc.core.http.message.LineParser, org.apache.hc.core.http.config.Http1Config)
{
org.apache.hc.core.http.impl.io.AbstractMessageParser v;
org.apache.hc.core.util.CharArrayBuffer v;
org.apache.hc.core.http.message.LineParser v, v;
org.apache.hc.core.http.config.Http1Config v, v;
java.util.ArrayList v;
v := @this: org.apache.hc.core.http.impl.io.AbstractMessageParser;
v := @parameter: org.apache.hc.core.http.message.LineParser;
v := @parameter: org.apache.hc.core.http.config.Http1Config;
specialinvoke v.<java.lang.Object: void <init>()>();
if v == null goto label;
v = v;
goto label;
label:
v = <org.apache.hc.core.http.message.LazyLineParser: org.apache.hc.core.http.message.LazyLineParser INSTANCE>;
label:
v.<org.apache.hc.core.http.impl.io.AbstractMessageParser: org.apache.hc.core.http.message.LineParser lineParser> = v;
if v == null goto label;
v = v;
goto label;
label:
v = <org.apache.hc.core.http.config.Http1Config: org.apache.hc.core.http.config.Http1Config DEFAULT>;
label:
v.<org.apache.hc.core.http.impl.io.AbstractMessageParser: org.apache.hc.core.http.config.Http1Config http1Config> = v;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v.<org.apache.hc.core.http.impl.io.AbstractMessageParser: java.util.List headerLines> = v;
v = new org.apache.hc.core.util.CharArrayBuffer;
specialinvoke v.<org.apache.hc.core.util.CharArrayBuffer: void <init>(int)>(128);
v.<org.apache.hc.core.http.impl.io.AbstractMessageParser: org.apache.hc.core.util.CharArrayBuffer headLine> = v;
v.<org.apache.hc.core.http.impl.io.AbstractMessageParser: int state> = 0;
return;
}
org.apache.hc.core.http.message.LineParser getLineParser()
{
org.apache.hc.core.http.impl.io.AbstractMessageParser v;
org.apache.hc.core.http.message.LineParser v;
v := @this: org.apache.hc.core.http.impl.io.AbstractMessageParser;
v = v.<org.apache.hc.core.http.impl.io.AbstractMessageParser: org.apache.hc.core.http.message.LineParser lineParser>;
return v;
}
public static org.apache.hc.core.http.Header[] parseHeaders(org.apache.hc.core.http.io.SessionInputBuffer, java.io.InputStream, int, int, org.apache.hc.core.http.message.LineParser) throws org.apache.hc.core.http.HttpException, java.io.IOException
{
org.apache.hc.core.http.io.SessionInputBuffer v;
java.util.ArrayList v;
org.apache.hc.core.http.message.LineParser v, v;
int v, v;
org.apache.hc.core.http.Header[] v;
java.io.InputStream v;
v := @parameter: org.apache.hc.core.http.io.SessionInputBuffer;
v := @parameter: java.io.InputStream;
v := @parameter: int;
v := @parameter: int;
v := @parameter: org.apache.hc.core.http.message.LineParser;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
if v == null goto label;
v = v;
goto label;
label:
v = <org.apache.hc.core.http.message.LazyLineParser: org.apache.hc.core.http.message.LazyLineParser INSTANCE>;
label:
v = staticinvoke <org.apache.hc.core.http.impl.io.AbstractMessageParser: org.apache.hc.core.http.Header[] parseHeaders(org.apache.hc.core.http.io.SessionInputBuffer,java.io.InputStream,int,int,org.apache.hc.core.http.message.LineParser,java.util.List)>(v, v, v, v, v, v);
return v;
}
public static org.apache.hc.core.http.Header[] parseHeaders(org.apache.hc.core.http.io.SessionInputBuffer, java.io.InputStream, int, int, org.apache.hc.core.http.message.LineParser, java.util.List) throws org.apache.hc.core.http.HttpException, java.io.IOException
{
org.apache.hc.core.http.io.SessionInputBuffer v;
java.util.List v;
org.apache.hc.core.util.CharArrayBuffer v, v, v;
org.apache.hc.core.http.message.LineParser v;
org.apache.hc.core.http.MessageConstraintException v, v;
int v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
org.apache.hc.core.http.Header v;
char v, v, v;
org.apache.hc.core.http.Header[] v;
java.lang.Object v;
java.io.InputStream v;
v := @parameter: org.apache.hc.core.http.io.SessionInputBuffer;
v := @parameter: java.io.InputStream;
v := @parameter: int;
v := @parameter: int;
v := @parameter: org.apache.hc.core.http.message.LineParser;
v := @parameter: java.util.List;
staticinvoke <org.apache.hc.core.util.Args: java.lang.Object notNull(java.lang.Object,java.lang.String)>(v, "Session input buffer");
staticinvoke <org.apache.hc.core.util.Args: java.lang.Object notNull(java.lang.Object,java.lang.String)>(v, "Input stream");
staticinvoke <org.apache.hc.core.util.Args: java.lang.Object notNull(java.lang.Object,java.lang.String)>(v, "Line parser");
staticinvoke <org.apache.hc.core.util.Args: java.lang.Object notNull(java.lang.Object,java.lang.String)>(v, "Header line list");
v = null;
v = null;
label:
if v != null goto label;
v = new org.apache.hc.core.util.CharArrayBuffer;
specialinvoke v.<org.apache.hc.core.util.CharArrayBuffer: void <init>(int)>(64);
v = v;
goto label;
label:
virtualinvoke v.<org.apache.hc.core.util.CharArrayBuffer: void clear()>();
label:
v = interfaceinvoke v.<org.apache.hc.core.http.io.SessionInputBuffer: int readLine(org.apache.hc.core.util.CharArrayBuffer,java.io.InputStream)>(v, v);
v = (int) -1;
if v == v goto label;
v = virtualinvoke v.<org.apache.hc.core.util.CharArrayBuffer: int length()>();
if v < 1 goto label;
v = virtualinvoke v.<org.apache.hc.core.util.CharArrayBuffer: char charAt(int)>(0);
if v == 32 goto label;
v = virtualinvoke v.<org.apache.hc.core.util.CharArrayBuffer: char charAt(int)>(0);
if v != 9 goto label;
label:
if v == null goto label;
v = 0;
label:
v = virtualinvoke v.<org.apache.hc.core.util.CharArrayBuffer: int length()>();
if v >= v goto label;
v = virtualinvoke v.<org.apache.hc.core.util.CharArrayBuffer: char charAt(int)>(v);
if v == 32 goto label;
if v != 9 goto label;
label:
v = v + 1;
goto label;
label:
if v <= 0 goto label;
v = virtualinvoke v.<org.apache.hc.core.util.CharArrayBuffer: int length()>();
v = v + 1;
v = virtualinvoke v.<org.apache.hc.core.util.CharArrayBuffer: int length()>();
v = v + v;
v = v - v;
if v <= v goto label;
v = new org.apache.hc.core.http.MessageConstraintException;
specialinvoke v.<org.apache.hc.core.http.MessageConstraintException: void <init>(java.lang.String)>("Maximum line length limit exceeded");
throw v;
label:
virtualinvoke v.<org.apache.hc.core.util.CharArrayBuffer: void append(char)>(32);
v = virtualinvoke v.<org.apache.hc.core.util.CharArrayBuffer: int length()>();
v = v - v;
virtualinvoke v.<org.apache.hc.core.util.CharArrayBuffer: void append(org.apache.hc.core.util.CharArrayBuffer,int,int)>(v, v, v);
goto label;
label:
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v = v;
v = null;
label:
if v <= 0 goto label;
v = interfaceinvoke v.<java.util.List: int size()>();
if v < v goto label;
v = new org.apache.hc.core.http.MessageConstraintException;
specialinvoke v.<org.apache.hc.core.http.MessageConstraintException: void <init>(java.lang.String)>("Maximum header count exceeded");
throw v;
label:
v = interfaceinvoke v.<java.util.List: int size()>();
v = newarray (org.apache.hc.core.http.Header)[v];
v = 0;
label:
v = interfaceinvoke v.<java.util.List: int size()>();
if v >= v goto label;
v = interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(v);
v = interfaceinvoke v.<org.apache.hc.core.http.message.LineParser: org.apache.hc.core.http.Header parseHeader(org.apache.hc.core.util.CharArrayBuffer)>(v);
v[v] = v;
v = v + 1;
goto label;
label:
return v;
}
protected abstract org.apache.hc.core.http.HttpMessage createMessage(org.apache.hc.core.util.CharArrayBuffer) throws java.io.IOException, org.apache.hc.core.http.HttpException;
protected abstract java.io.IOException createConnectionClosedException();
public org.apache.hc.core.http.HttpMessage parse(org.apache.hc.core.http.io.SessionInputBuffer, java.io.InputStream) throws java.io.IOException, org.apache.hc.core.http.HttpException
{
java.lang.IllegalStateException v;
org.apache.hc.core.http.impl.io.AbstractMessageParser v;
org.apache.hc.core.http.io.SessionInputBuffer v;
org.apache.hc.core.http.MessageConstraintException v;
int v, v, v, v, v, v, v, v;
org.apache.hc.core.http.config.Http1Config v, v, v;
java.io.IOException v;
org.apache.hc.core.http.HttpMessage v, v, v, v, v;
java.util.List v, v;
org.apache.hc.core.util.CharArrayBuffer v, v, v, v;
org.apache.hc.core.http.message.LineParser v;
org.apache.hc.core.http.Header[] v;
java.io.InputStream v;
v := @this: org.apache.hc.core.http.impl.io.AbstractMessageParser;
v := @parameter: org.apache.hc.core.http.io.SessionInputBuffer;
v := @parameter: java.io.InputStream;
staticinvoke <org.apache.hc.core.util.Args: java.lang.Object notNull(java.lang.Object,java.lang.String)>(v, "Session input buffer");
staticinvoke <org.apache.hc.core.util.Args: java.lang.Object notNull(java.lang.Object,java.lang.String)>(v, "Input stream");
v = v.<org.apache.hc.core.http.impl.io.AbstractMessageParser: int state>;
lookupswitch(v)
{
case 0: goto label;
case 1: goto label;
default: goto label;
};
label:
v = 0;
label:
v = v.<org.apache.hc.core.http.impl.io.AbstractMessageParser: org.apache.hc.core.http.config.Http1Config http1Config>;
v = virtualinvoke v.<org.apache.hc.core.http.config.Http1Config: int getMaxEmptyLineCount()>();
if v >= v goto label;
v = v.<org.apache.hc.core.http.impl.io.AbstractMessageParser: org.apache.hc.core.util.CharArrayBuffer headLine>;
virtualinvoke v.<org.apache.hc.core.util.CharArrayBuffer: void clear()>();
v = v.<org.apache.hc.core.http.impl.io.AbstractMessageParser: org.apache.hc.core.util.CharArrayBuffer headLine>;
v = interfaceinvoke v.<org.apache.hc.core.http.io.SessionInputBuffer: int readLine(org.apache.hc.core.util.CharArrayBuffer,java.io.InputStream)>(v, v);
v = (int) -1;
if v != v goto label;
v = virtualinvoke v.<org.apache.hc.core.http.impl.io.AbstractMessageParser: java.io.IOException createConnectionClosedException()>();
throw v;
label:
v = v.<org.apache.hc.core.http.impl.io.AbstractMessageParser: org.apache.hc.core.util.CharArrayBuffer headLine>;
v = virtualinvoke v.<org.apache.hc.core.util.CharArrayBuffer: int length()>();
if v <= 0 goto label;
v = v.<org.apache.hc.core.http.impl.io.AbstractMessageParser: org.apache.hc.core.util.CharArrayBuffer headLine>;
v = virtualinvoke v.<org.apache.hc.core.http.impl.io.AbstractMessageParser: org.apache.hc.core.http.HttpMessage createMessage(org.apache.hc.core.util.CharArrayBuffer)>(v);
v.<org.apache.hc.core.http.impl.io.AbstractMessageParser: org.apache.hc.core.http.HttpMessage message> = v;
v = v.<org.apache.hc.core.http.impl.io.AbstractMessageParser: org.apache.hc.core.http.HttpMessage message>;
if v != null goto label;
label:
v = v + 1;
goto label;
label:
v = v.<org.apache.hc.core.http.impl.io.AbstractMessageParser: org.apache.hc.core.http.HttpMessage message>;
if v != null goto label;
v = new org.apache.hc.core.http.MessageConstraintException;
specialinvoke v.<org.apache.hc.core.http.MessageConstraintException: void <init>(java.lang.String)>("Maximum empty line limit exceeded");
throw v;
label:
v.<org.apache.hc.core.http.impl.io.AbstractMessageParser: int state> = 1;
label:
v = v.<org.apache.hc.core.http.impl.io.AbstractMessageParser: org.apache.hc.core.http.config.Http1Config http1Config>;
v = virtualinvoke v.<org.apache.hc.core.http.config.Http1Config: int getMaxHeaderCount()>();
v = v.<org.apache.hc.core.http.impl.io.AbstractMessageParser: org.apache.hc.core.http.config.Http1Config http1Config>;
v = virtualinvoke v.<org.apache.hc.core.http.config.Http1Config: int getMaxLineLength()>();
v = v.<org.apache.hc.core.http.impl.io.AbstractMessageParser: org.apache.hc.core.http.message.LineParser lineParser>;
v = v.<org.apache.hc.core.http.impl.io.AbstractMessageParser: java.util.List headerLines>;
v = staticinvoke <org.apache.hc.core.http.impl.io.AbstractMessageParser: org.apache.hc.core.http.Header[] parseHeaders(org.apache.hc.core.http.io.SessionInputBuffer,java.io.InputStream,int,int,org.apache.hc.core.http.message.LineParser,java.util.List)>(v, v, v, v, v, v);
v = v.<org.apache.hc.core.http.impl.io.AbstractMessageParser: org.apache.hc.core.http.HttpMessage message>;
interfaceinvoke v.<org.apache.hc.core.http.HttpMessage: void setHeaders(org.apache.hc.core.http.Header[])>(v);
v = v.<org.apache.hc.core.http.impl.io.AbstractMessageParser: org.apache.hc.core.http.HttpMessage message>;
v.<org.apache.hc.core.http.impl.io.AbstractMessageParser: org.apache.hc.core.http.HttpMessage message> = null;
v = v.<org.apache.hc.core.http.impl.io.AbstractMessageParser: java.util.List headerLines>;
interfaceinvoke v.<java.util.List: void clear()>();
v.<org.apache.hc.core.http.impl.io.AbstractMessageParser: int state> = 0;
return v;
label:
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("Inconsistent parser state");
throw v;
}
}