public final class okio.GzipSink extends java.lang.Object implements okio.Sink
{
private final okio.BufferedSink sink;
private final java.util.zip.Deflater deflater;
private final okio.DeflaterSink deflaterSink;
private boolean closed;
private final java.util.zip.CRC32 crc;
public void <init>(okio.Sink)
{
java.util.zip.Deflater v, v;
java.lang.IllegalArgumentException v;
okio.DeflaterSink v;
okio.Sink v;
okio.GzipSink v;
okio.BufferedSink v, v;
int v;
java.util.zip.CRC32 v;
v := @this: okio.GzipSink;
v := @parameter: okio.Sink;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new java.util.zip.CRC32;
specialinvoke v.<java.util.zip.CRC32: void <init>()>();
v.<okio.GzipSink: java.util.zip.CRC32 crc> = v;
if v != null goto label;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("sink == null");
throw v;
label:
v = new java.util.zip.Deflater;
v = (int) -1;
specialinvoke v.<java.util.zip.Deflater: void <init>(int,boolean)>(v, 1);
v.<okio.GzipSink: java.util.zip.Deflater deflater> = v;
v = staticinvoke <okio.Okio: okio.BufferedSink buffer(okio.Sink)>(v);
v.<okio.GzipSink: okio.BufferedSink sink> = v;
v = new okio.DeflaterSink;
v = v.<okio.GzipSink: okio.BufferedSink sink>;
v = v.<okio.GzipSink: java.util.zip.Deflater deflater>;
specialinvoke v.<okio.DeflaterSink: void <init>(okio.BufferedSink,java.util.zip.Deflater)>(v, v);
v.<okio.GzipSink: okio.DeflaterSink deflaterSink> = v;
specialinvoke v.<okio.GzipSink: void writeHeader()>();
return;
}
public void write(okio.Buffer, long) throws java.io.IOException
{
okio.Buffer v;
long v;
java.lang.IllegalArgumentException v;
okio.DeflaterSink v;
okio.GzipSink v;
byte v, v;
java.lang.String v;
v := @this: okio.GzipSink;
v := @parameter: okio.Buffer;
v := @parameter: long;
v = v cmp 0L;
if v >= 0 goto label;
v = new java.lang.IllegalArgumentException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (long)>(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[])>("byteCount < 0: \u0001");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
v = v cmp 0L;
if v != 0 goto label;
return;
label:
specialinvoke v.<okio.GzipSink: void updateCrc(okio.Buffer,long)>(v, v);
v = v.<okio.GzipSink: okio.DeflaterSink deflaterSink>;
virtualinvoke v.<okio.DeflaterSink: void write(okio.Buffer,long)>(v, v);
return;
}
public void flush() throws java.io.IOException
{
okio.GzipSink v;
okio.DeflaterSink v;
v := @this: okio.GzipSink;
v = v.<okio.GzipSink: okio.DeflaterSink deflaterSink>;
virtualinvoke v.<okio.DeflaterSink: void flush()>();
return;
}
public okio.Timeout timeout()
{
okio.GzipSink v;
okio.Timeout v;
okio.BufferedSink v;
v := @this: okio.GzipSink;
v = v.<okio.GzipSink: okio.BufferedSink sink>;
v = interfaceinvoke v.<okio.BufferedSink: okio.Timeout timeout()>();
return v;
}
public void close() throws java.io.IOException
{
java.lang.Throwable v, v, v, v;
java.util.zip.Deflater v;
okio.DeflaterSink v;
okio.GzipSink v;
okio.BufferedSink v;
boolean v;
v := @this: okio.GzipSink;
v = v.<okio.GzipSink: boolean closed>;
if v == 0 goto label;
return;
label:
v = null;
label:
v = v.<okio.GzipSink: okio.DeflaterSink deflaterSink>;
virtualinvoke v.<okio.DeflaterSink: void finishDeflate()>();
specialinvoke v.<okio.GzipSink: void writeFooter()>();
label:
goto label;
label:
v := @caughtexception;
v = v;
label:
v = v.<okio.GzipSink: java.util.zip.Deflater deflater>;
virtualinvoke v.<java.util.zip.Deflater: void end()>();
label:
goto label;
label:
v := @caughtexception;
if v != null goto label;
v = v;
label:
v = v.<okio.GzipSink: okio.BufferedSink sink>;
interfaceinvoke v.<okio.BufferedSink: void close()>();
label:
goto label;
label:
v := @caughtexception;
if v != null goto label;
v = v;
label:
v.<okio.GzipSink: boolean closed> = 1;
if v == null goto label;
staticinvoke <okio.Util: void sneakyRethrow(java.lang.Throwable)>(v);
label:
return;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public final java.util.zip.Deflater deflater()
{
okio.GzipSink v;
java.util.zip.Deflater v;
v := @this: okio.GzipSink;
v = v.<okio.GzipSink: java.util.zip.Deflater deflater>;
return v;
}
private void writeHeader()
{
okio.Buffer v;
okio.GzipSink v;
okio.BufferedSink v;
v := @this: okio.GzipSink;
v = v.<okio.GzipSink: okio.BufferedSink sink>;
v = interfaceinvoke v.<okio.BufferedSink: okio.Buffer buffer()>();
virtualinvoke v.<okio.Buffer: okio.Buffer writeShort(int)>(8075);
virtualinvoke v.<okio.Buffer: okio.Buffer writeByte(int)>(8);
virtualinvoke v.<okio.Buffer: okio.Buffer writeByte(int)>(0);
virtualinvoke v.<okio.Buffer: okio.Buffer writeInt(int)>(0);
virtualinvoke v.<okio.Buffer: okio.Buffer writeByte(int)>(0);
virtualinvoke v.<okio.Buffer: okio.Buffer writeByte(int)>(0);
return;
}
private void writeFooter() throws java.io.IOException
{
okio.GzipSink v;
okio.BufferedSink v, v;
java.util.zip.CRC32 v;
long v, v;
java.util.zip.Deflater v;
v := @this: okio.GzipSink;
v = v.<okio.GzipSink: okio.BufferedSink sink>;
v = v.<okio.GzipSink: java.util.zip.CRC32 crc>;
v = virtualinvoke v.<java.util.zip.CRC32: long getValue()>();
interfaceinvoke v.<okio.BufferedSink: okio.BufferedSink writeIntLe(int)>(v);
v = v.<okio.GzipSink: okio.BufferedSink sink>;
v = v.<okio.GzipSink: java.util.zip.Deflater deflater>;
v = virtualinvoke v.<java.util.zip.Deflater: long getBytesRead()>();
interfaceinvoke v.<okio.BufferedSink: okio.BufferedSink writeIntLe(int)>(v);
return;
}
private void updateCrc(okio.Buffer, long)
{
byte[] v;
okio.Buffer v;
long v, v;
okio.GzipSink v;
byte v;
int v, v, v, v, v;
java.util.zip.CRC32 v;
okio.Segment v;
v := @this: okio.GzipSink;
v := @parameter: okio.Buffer;
v := @parameter: long;
v = v.<okio.Buffer: okio.Segment head>;
label:
v = v cmp 0L;
if v <= 0 goto label;
v = v.<okio.Segment: int limit>;
v = v.<okio.Segment: int pos>;
v = v - v;
v = staticinvoke <java.lang.Math: long min(long,long)>(v, v);
v = v.<okio.GzipSink: java.util.zip.CRC32 crc>;
v = v.<okio.Segment: byte[] data>;
v = v.<okio.Segment: int pos>;
virtualinvoke v.<java.util.zip.CRC32: void update(byte[],int,int)>(v, v, v);
v = v - v;
v = v.<okio.Segment: okio.Segment next>;
goto label;
label:
return;
}
}