public final class okhttp.internal.http.Http2Codec extends java.lang.Object implements okhttp.internal.http.HttpCodec
{
private static final java.lang.String CONNECTION;
private static final java.lang.String HOST;
private static final java.lang.String KEEP_ALIVE;
private static final java.lang.String PROXY_CONNECTION;
private static final java.lang.String TRANSFER_ENCODING;
private static final java.lang.String TE;
private static final java.lang.String ENCODING;
private static final java.lang.String UPGRADE;
private static final java.util.List HTTP_2_SKIPPED_REQUEST_HEADERS;
private static final java.util.List HTTP_2_SKIPPED_RESPONSE_HEADERS;
private final okhttp.Interceptor$Chain chain;
final okhttp.internal.connection.StreamAllocation streamAllocation;
private final okhttp.internal.http.Http2Connection connection;
private okhttp.internal.http.Http2Stream stream;
private final okhttp.Protocol protocol;
public void <init>(okhttp.OkHttpClient, okhttp.Interceptor$Chain, okhttp.internal.connection.StreamAllocation, okhttp.internal.http.Http2Connection)
{
okhttp.internal.http.Http2Connection v;
okhttp.internal.http.Http2Codec v;
okhttp.Interceptor$Chain v;
java.util.List v;
okhttp.OkHttpClient v;
okhttp.internal.connection.StreamAllocation v;
okhttp.Protocol v, v;
boolean v;
v := @this: okhttp.internal.http.Http2Codec;
v := @parameter: okhttp.OkHttpClient;
v := @parameter: okhttp.Interceptor$Chain;
v := @parameter: okhttp.internal.connection.StreamAllocation;
v := @parameter: okhttp.internal.http.Http2Connection;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<okhttp.internal.http.Http2Codec: okhttp.Interceptor$Chain chain> = v;
v.<okhttp.internal.http.Http2Codec: okhttp.internal.connection.StreamAllocation streamAllocation> = v;
v.<okhttp.internal.http.Http2Codec: okhttp.internal.http.Http2Connection connection> = v;
v = virtualinvoke v.<okhttp.OkHttpClient: java.util.List protocols()>();
v = <okhttp.Protocol: okhttp.Protocol H2_PRIOR_KNOWLEDGE>;
v = interfaceinvoke v.<java.util.List: boolean contains(java.lang.Object)>(v);
if v == 0 goto label;
v = <okhttp.Protocol: okhttp.Protocol H2_PRIOR_KNOWLEDGE>;
goto label;
label:
v = <okhttp.Protocol: okhttp.Protocol HTTP_2>;
label:
v.<okhttp.internal.http.Http2Codec: okhttp.Protocol protocol> = v;
return;
}
public okio.Sink createRequestBody(okhttp.Request, long)
{
okhttp.Request v;
okhttp.internal.http.Http2Codec v;
long v;
okio.Sink v;
okhttp.internal.http.Http2Stream v;
v := @this: okhttp.internal.http.Http2Codec;
v := @parameter: okhttp.Request;
v := @parameter: long;
v = v.<okhttp.internal.http.Http2Codec: okhttp.internal.http.Http2Stream stream>;
v = virtualinvoke v.<okhttp.internal.http.Http2Stream: okio.Sink getSink()>();
return v;
}
public void writeRequestHeaders(okhttp.Request) throws java.io.IOException
{
okhttp.RequestBody v;
okio.Timeout v, v;
int v, v;
boolean v;
okhttp.internal.http.Http2Stream v, v, v, v;
okhttp.internal.http.Http2Connection v;
okhttp.Request v;
okhttp.internal.http.Http2Codec v;
okhttp.Interceptor$Chain v, v;
java.util.concurrent.TimeUnit v, v;
java.util.List v;
v := @this: okhttp.internal.http.Http2Codec;
v := @parameter: okhttp.Request;
v = v.<okhttp.internal.http.Http2Codec: okhttp.internal.http.Http2Stream stream>;
if v == null goto label;
return;
label:
v = virtualinvoke v.<okhttp.Request: okhttp.RequestBody body()>();
if v == null goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = staticinvoke <okhttp.internal.http.Http2Codec: java.util.List http2HeadersList(okhttp.Request)>(v);
v = v.<okhttp.internal.http.Http2Codec: okhttp.internal.http.Http2Connection connection>;
v = virtualinvoke v.<okhttp.internal.http.Http2Connection: okhttp.internal.http.Http2Stream newStream(java.util.List,boolean)>(v, v);
v.<okhttp.internal.http.Http2Codec: okhttp.internal.http.Http2Stream stream> = v;
v = v.<okhttp.internal.http.Http2Codec: okhttp.internal.http.Http2Stream stream>;
v = virtualinvoke v.<okhttp.internal.http.Http2Stream: okio.Timeout readTimeout()>();
v = v.<okhttp.internal.http.Http2Codec: okhttp.Interceptor$Chain chain>;
v = interfaceinvoke v.<okhttp.Interceptor$Chain: int readTimeoutMillis()>();
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit MILLISECONDS>;
virtualinvoke v.<okio.Timeout: okio.Timeout timeout(long,java.util.concurrent.TimeUnit)>(v, v);
v = v.<okhttp.internal.http.Http2Codec: okhttp.internal.http.Http2Stream stream>;
v = virtualinvoke v.<okhttp.internal.http.Http2Stream: okio.Timeout writeTimeout()>();
v = v.<okhttp.internal.http.Http2Codec: okhttp.Interceptor$Chain chain>;
v = interfaceinvoke v.<okhttp.Interceptor$Chain: int writeTimeoutMillis()>();
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit MILLISECONDS>;
virtualinvoke v.<okio.Timeout: okio.Timeout timeout(long,java.util.concurrent.TimeUnit)>(v, v);
return;
}
public void flushRequest() throws java.io.IOException
{
okhttp.internal.http.Http2Codec v;
okhttp.internal.http.Http2Connection v;
v := @this: okhttp.internal.http.Http2Codec;
v = v.<okhttp.internal.http.Http2Codec: okhttp.internal.http.Http2Connection connection>;
virtualinvoke v.<okhttp.internal.http.Http2Connection: void flush()>();
return;
}
public void finishRequest() throws java.io.IOException
{
okhttp.internal.http.Http2Codec v;
okio.Sink v;
okhttp.internal.http.Http2Stream v;
v := @this: okhttp.internal.http.Http2Codec;
v = v.<okhttp.internal.http.Http2Codec: okhttp.internal.http.Http2Stream stream>;
v = virtualinvoke v.<okhttp.internal.http.Http2Stream: okio.Sink getSink()>();
interfaceinvoke v.<okio.Sink: void close()>();
return;
}
public okhttp.Response$Builder readResponseHeaders(boolean) throws java.io.IOException
{
okhttp.internal.http.Http2Codec v;
okhttp.Headers v;
okhttp.internal.Internal v;
int v;
okhttp.Response$Builder v;
okhttp.Protocol v;
boolean v;
okhttp.internal.http.Http2Stream v;
v := @this: okhttp.internal.http.Http2Codec;
v := @parameter: boolean;
v = v.<okhttp.internal.http.Http2Codec: okhttp.internal.http.Http2Stream stream>;
v = virtualinvoke v.<okhttp.internal.http.Http2Stream: okhttp.Headers takeHeaders()>();
v = v.<okhttp.internal.http.Http2Codec: okhttp.Protocol protocol>;
v = staticinvoke <okhttp.internal.http.Http2Codec: okhttp.Response$Builder readHttp2HeadersList(okhttp.Headers,okhttp.Protocol)>(v, v);
if v == 0 goto label;
v = <okhttp.internal.Internal: okhttp.internal.Internal instance>;
v = virtualinvoke v.<okhttp.internal.Internal: int code(okhttp.Response$Builder)>(v);
if v != 100 goto label;
return null;
label:
return v;
}
public static java.util.List http2HeadersList(okhttp.Request)
{
okhttp.Headers v;
java.util.ArrayList v;
okhttp.internal.http.Header v, v, v, v, v;
java.util.Locale v;
okio.ByteString v, v, v, v, v;
int v, v, v, v;
java.lang.String v, v, v, v, v, v, v, v;
boolean v;
okhttp.Request v;
java.util.List v;
okhttp.HttpUrl v, v;
v := @parameter: okhttp.Request;
v = virtualinvoke v.<okhttp.Request: okhttp.Headers headers()>();
v = new java.util.ArrayList;
v = virtualinvoke v.<okhttp.Headers: int size()>();
v = v + 4;
specialinvoke v.<java.util.ArrayList: void <init>(int)>(v);
v = new okhttp.internal.http.Header;
v = <okhttp.internal.http.Header: okio.ByteString TARGET_METHOD>;
v = virtualinvoke v.<okhttp.Request: java.lang.String method()>();
specialinvoke v.<okhttp.internal.http.Header: void <init>(okio.ByteString,java.lang.String)>(v, v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v = new okhttp.internal.http.Header;
v = <okhttp.internal.http.Header: okio.ByteString TARGET_PATH>;
v = virtualinvoke v.<okhttp.Request: okhttp.HttpUrl url()>();
v = staticinvoke <okhttp.internal.http.RequestLine: java.lang.String requestPath(okhttp.HttpUrl)>(v);
specialinvoke v.<okhttp.internal.http.Header: void <init>(okio.ByteString,java.lang.String)>(v, v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v = virtualinvoke v.<okhttp.Request: java.lang.String header(java.lang.String)>("Host");
if v == null goto label;
v = new okhttp.internal.http.Header;
v = <okhttp.internal.http.Header: okio.ByteString TARGET_AUTHORITY>;
specialinvoke v.<okhttp.internal.http.Header: void <init>(okio.ByteString,java.lang.String)>(v, v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
label:
v = new okhttp.internal.http.Header;
v = <okhttp.internal.http.Header: okio.ByteString TARGET_SCHEME>;
v = virtualinvoke v.<okhttp.Request: okhttp.HttpUrl url()>();
v = virtualinvoke v.<okhttp.HttpUrl: java.lang.String scheme()>();
specialinvoke v.<okhttp.internal.http.Header: void <init>(okio.ByteString,java.lang.String)>(v, v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v = 0;
v = virtualinvoke v.<okhttp.Headers: int size()>();
label:
if v >= v goto label;
v = virtualinvoke v.<okhttp.Headers: java.lang.String name(int)>(v);
v = <java.util.Locale: java.util.Locale US>;
v = virtualinvoke v.<java.lang.String: java.lang.String toLowerCase(java.util.Locale)>(v);
v = staticinvoke <okio.ByteString: okio.ByteString encodeUtf8(java.lang.String)>(v);
v = <okhttp.internal.http.Http2Codec: java.util.List HTTP_2_SKIPPED_REQUEST_HEADERS>;
v = virtualinvoke v.<okio.ByteString: java.lang.String utf8()>();
v = interfaceinvoke v.<java.util.List: boolean contains(java.lang.Object)>(v);
if v != 0 goto label;
v = new okhttp.internal.http.Header;
v = virtualinvoke v.<okhttp.Headers: java.lang.String value(int)>(v);
specialinvoke v.<okhttp.internal.http.Header: void <init>(okio.ByteString,java.lang.String)>(v, v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
label:
v = v + 1;
goto label;
label:
return v;
}
public static okhttp.Response$Builder readHttp2HeadersList(okhttp.Headers, okhttp.Protocol) throws java.io.IOException
{
okhttp.Headers v, v;
okhttp.internal.Internal v;
int v, v, v;
okhttp.Response$Builder v, v, v, v, v;
okhttp.Headers$Builder v;
java.lang.String v, v, v, v;
boolean v, v;
okhttp.internal.http.StatusLine v;
java.net.ProtocolException v;
java.util.List v;
okhttp.Protocol v;
v := @parameter: okhttp.Headers;
v := @parameter: okhttp.Protocol;
v = null;
v = new okhttp.Headers$Builder;
specialinvoke v.<okhttp.Headers$Builder: void <init>()>();
v = 0;
v = virtualinvoke v.<okhttp.Headers: int size()>();
label:
if v >= v goto label;
v = virtualinvoke v.<okhttp.Headers: java.lang.String name(int)>(v);
v = virtualinvoke v.<okhttp.Headers: java.lang.String value(int)>(v);
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(":status");
if v == 0 goto label;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("HTTP/1.1 \u0001");
v = staticinvoke <okhttp.internal.http.StatusLine: okhttp.internal.http.StatusLine parse(java.lang.String)>(v);
goto label;
label:
v = <okhttp.internal.http.Http2Codec: java.util.List HTTP_2_SKIPPED_RESPONSE_HEADERS>;
v = interfaceinvoke v.<java.util.List: boolean contains(java.lang.Object)>(v);
if v != 0 goto label;
v = <okhttp.internal.Internal: okhttp.internal.Internal instance>;
virtualinvoke v.<okhttp.internal.Internal: void addLenient(okhttp.Headers$Builder,java.lang.String,java.lang.String)>(v, v, v);
label:
v = v + 1;
goto label;
label:
if v != null goto label;
v = new java.net.ProtocolException;
specialinvoke v.<java.net.ProtocolException: void <init>(java.lang.String)>("Expected \':status\' header not present");
throw v;
label:
v = new okhttp.Response$Builder;
specialinvoke v.<okhttp.Response$Builder: void <init>()>();
v = virtualinvoke v.<okhttp.Response$Builder: okhttp.Response$Builder protocol(okhttp.Protocol)>(v);
v = v.<okhttp.internal.http.StatusLine: int code>;
v = virtualinvoke v.<okhttp.Response$Builder: okhttp.Response$Builder code(int)>(v);
v = v.<okhttp.internal.http.StatusLine: java.lang.String message>;
v = virtualinvoke v.<okhttp.Response$Builder: okhttp.Response$Builder message(java.lang.String)>(v);
v = virtualinvoke v.<okhttp.Headers$Builder: okhttp.Headers build()>();
v = virtualinvoke v.<okhttp.Response$Builder: okhttp.Response$Builder headers(okhttp.Headers)>(v);
return v;
}
public okhttp.ResponseBody openResponseBody(okhttp.Response) throws java.io.IOException
{
okio.Source v;
okhttp.internal.http.Http2Codec$StreamFinishingSource v;
okhttp.internal.http.Http2Codec v;
long v;
okio.BufferedSource v;
okhttp.internal.connection.StreamAllocation v, v;
okhttp.EventListener v;
okhttp.Response v;
okhttp.Call v;
java.lang.String v;
okhttp.internal.http.RealResponseBody v;
okhttp.internal.http.Http2Stream v;
v := @this: okhttp.internal.http.Http2Codec;
v := @parameter: okhttp.Response;
v = v.<okhttp.internal.http.Http2Codec: okhttp.internal.connection.StreamAllocation streamAllocation>;
v = v.<okhttp.internal.connection.StreamAllocation: okhttp.EventListener eventListener>;
v = v.<okhttp.internal.http.Http2Codec: okhttp.internal.connection.StreamAllocation streamAllocation>;
v = v.<okhttp.internal.connection.StreamAllocation: okhttp.Call call>;
virtualinvoke v.<okhttp.EventListener: void responseBodyStart(okhttp.Call)>(v);
v = virtualinvoke v.<okhttp.Response: java.lang.String header(java.lang.String)>("Content-Type");
v = staticinvoke <okhttp.internal.http.HttpHeaders: long contentLength(okhttp.Response)>(v);
v = new okhttp.internal.http.Http2Codec$StreamFinishingSource;
v = v.<okhttp.internal.http.Http2Codec: okhttp.internal.http.Http2Stream stream>;
v = virtualinvoke v.<okhttp.internal.http.Http2Stream: okio.Source getSource()>();
specialinvoke v.<okhttp.internal.http.Http2Codec$StreamFinishingSource: void <init>(okhttp.internal.http.Http2Codec,okio.Source)>(v, v);
v = new okhttp.internal.http.RealResponseBody;
v = staticinvoke <okio.Okio: okio.BufferedSource buffer(okio.Source)>(v);
specialinvoke v.<okhttp.internal.http.RealResponseBody: void <init>(java.lang.String,long,okio.BufferedSource)>(v, v, v);
return v;
}
public void cancel()
{
okhttp.internal.http.Http2Codec v;
okhttp.internal.http.ErrorCode v;
okhttp.internal.http.Http2Stream v, v;
v := @this: okhttp.internal.http.Http2Codec;
v = v.<okhttp.internal.http.Http2Codec: okhttp.internal.http.Http2Stream stream>;
if v == null goto label;
v = v.<okhttp.internal.http.Http2Codec: okhttp.internal.http.Http2Stream stream>;
v = <okhttp.internal.http.ErrorCode: okhttp.internal.http.ErrorCode CANCEL>;
virtualinvoke v.<okhttp.internal.http.Http2Stream: void closeLater(okhttp.internal.http.ErrorCode)>(v);
label:
return;
}
static void <clinit>()
{
java.util.List v, v;
java.lang.String[] v, v;
v = newarray (java.lang.String)[12];
v[0] = "connection";
v[1] = "host";
v[2] = "keep-alive";
v[3] = "proxy-connection";
v[4] = "te";
v[5] = "transfer-encoding";
v[6] = "encoding";
v[7] = "upgrade";
v[8] = ":method";
v[9] = ":path";
v[10] = ":scheme";
v[11] = ":authority";
v = staticinvoke <okhttp.internal.Util: java.util.List immutableList(java.lang.Object[])>(v);
<okhttp.internal.http.Http2Codec: java.util.List HTTP_2_SKIPPED_REQUEST_HEADERS> = v;
v = newarray (java.lang.String)[8];
v[0] = "connection";
v[1] = "host";
v[2] = "keep-alive";
v[3] = "proxy-connection";
v[4] = "te";
v[5] = "transfer-encoding";
v[6] = "encoding";
v[7] = "upgrade";
v = staticinvoke <okhttp.internal.Util: java.util.List immutableList(java.lang.Object[])>(v);
<okhttp.internal.http.Http2Codec: java.util.List HTTP_2_SKIPPED_RESPONSE_HEADERS> = v;
return;
}
}