class okhttp3.internal.cache2.Relay$RelaySource implements okio.Source
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: okhttp3.internal.cache2.Relay$RelaySource
super_class: java.lang.Object
{
private final okio.Timeout timeout;
descriptor: Lokio/Timeout;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private okhttp3.internal.cache2.FileOperator fileOperator;
descriptor: Lokhttp3/internal/cache2/FileOperator;
flags: (0x0002) ACC_PRIVATE
private long sourcePos;
descriptor: J
flags: (0x0002) ACC_PRIVATE
final okhttp3.internal.cache2.Relay this$0;
descriptor: Lokhttp3/internal/cache2/Relay;
flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC
void <init>(okhttp3.internal.cache2.Relay);
descriptor: (Lokhttp3/internal/cache2/Relay;)V
flags: (0x0000)
Code:
stack=4, locals=2, args_size=2
start local 0 0: aload 0
aload 1
putfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new okio.Timeout
dup
invokespecial okio.Timeout.<init>:()V
putfield okhttp3.internal.cache2.Relay$RelaySource.timeout:Lokio/Timeout;
2: aload 0
new okhttp3.internal.cache2.FileOperator
dup
aload 1
getfield okhttp3.internal.cache2.Relay.file:Ljava/io/RandomAccessFile;
invokevirtual java.io.RandomAccessFile.getChannel:()Ljava/nio/channels/FileChannel;
invokespecial okhttp3.internal.cache2.FileOperator.<init>:(Ljava/nio/channels/FileChannel;)V
putfield okhttp3.internal.cache2.Relay$RelaySource.fileOperator:Lokhttp3/internal/cache2/FileOperator;
3: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lokhttp3/internal/cache2/Relay$RelaySource;
MethodParameters:
Name Flags
this$0 final
public long read(okio.Buffer, long);
descriptor: (Lokio/Buffer;J)J
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=16, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.fileOperator:Lokhttp3/internal/cache2/FileOperator;
ifnonnull 1
new java.lang.IllegalStateException
dup
ldc "closed"
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
1: StackMap locals:
StackMap stack:
aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
dup
astore 7
monitorenter
2: goto 12
start local 4 3: StackMap locals: okhttp3.internal.cache2.Relay$RelaySource okio.Buffer long long top okhttp3.internal.cache2.Relay
StackMap stack:
aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
getfield okhttp3.internal.cache2.Relay.complete:Z
ifeq 5
aload 7
monitorexit
4: ldc -1
lreturn
5: StackMap locals:
StackMap stack:
aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
getfield okhttp3.internal.cache2.Relay.upstreamReader:Ljava/lang/Thread;
ifnull 8
6: aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.timeout:Lokio/Timeout;
aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
invokevirtual okio.Timeout.waitUntilNotified:(Ljava/lang/Object;)V
7: goto 12
8: StackMap locals:
StackMap stack:
aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
putfield okhttp3.internal.cache2.Relay.upstreamReader:Ljava/lang/Thread;
9: iconst_1
istore 6
start local 6 10: aload 7
monitorexit
11: goto 26
end local 6 end local 4 12: StackMap locals: okhttp3.internal.cache2.Relay$RelaySource okio.Buffer long top top top okhttp3.internal.cache2.Relay
StackMap stack:
aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.sourcePos:J
aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
getfield okhttp3.internal.cache2.Relay.upstreamPos:J
dup2
lstore 4
start local 4 13: lcmp
ifeq 3
14: lload 4
aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
getfield okhttp3.internal.cache2.Relay.buffer:Lokio/Buffer;
invokevirtual okio.Buffer.size:()J
lsub
lstore 8
start local 8 15: aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.sourcePos:J
lload 8
lcmp
ifge 19
16: iconst_2
istore 6
start local 6 17: aload 7
monitorexit
18: goto 26
end local 6 19: StackMap locals: okhttp3.internal.cache2.Relay$RelaySource okio.Buffer long long top okhttp3.internal.cache2.Relay long
StackMap stack:
lload 2
lload 4
aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.sourcePos:J
lsub
invokestatic java.lang.Math.min:(JJ)J
lstore 10
start local 10 20: aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
getfield okhttp3.internal.cache2.Relay.buffer:Lokio/Buffer;
aload 1
aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.sourcePos:J
lload 8
lsub
lload 10
invokevirtual okio.Buffer.copyTo:(Lokio/Buffer;JJ)Lokio/Buffer;
pop
21: aload 0
dup
getfield okhttp3.internal.cache2.Relay$RelaySource.sourcePos:J
lload 10
ladd
putfield okhttp3.internal.cache2.Relay$RelaySource.sourcePos:J
22: lload 10
aload 7
monitorexit
23: lreturn
end local 10 end local 8 end local 4 24: StackMap locals: okhttp3.internal.cache2.Relay$RelaySource okio.Buffer long top top top okhttp3.internal.cache2.Relay
StackMap stack: java.lang.Throwable
aload 7
monitorexit
25: athrow
start local 4 start local 6 26: StackMap locals: okhttp3.internal.cache2.Relay$RelaySource okio.Buffer long long int
StackMap stack:
iload 6
iconst_2
if_icmpne 31
27: lload 2
lload 4
aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.sourcePos:J
lsub
invokestatic java.lang.Math.min:(JJ)J
lstore 7
start local 7 28: aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.fileOperator:Lokhttp3/internal/cache2/FileOperator;
ldc 32
aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.sourcePos:J
ladd
aload 1
lload 7
invokevirtual okhttp3.internal.cache2.FileOperator.read:(JLokio/Buffer;J)V
29: aload 0
dup
getfield okhttp3.internal.cache2.Relay$RelaySource.sourcePos:J
lload 7
ladd
putfield okhttp3.internal.cache2.Relay$RelaySource.sourcePos:J
30: lload 7
lreturn
end local 7 31: StackMap locals:
StackMap stack:
aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
getfield okhttp3.internal.cache2.Relay.upstream:Lokio/Source;
aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
getfield okhttp3.internal.cache2.Relay.upstreamBuffer:Lokio/Buffer;
aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
getfield okhttp3.internal.cache2.Relay.bufferMaxSize:J
invokeinterface okio.Source.read:(Lokio/Buffer;J)J
lstore 7
start local 7 32: lload 7
ldc -1
lcmp
ifne 42
33: aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
lload 4
invokevirtual okhttp3.internal.cache2.Relay.commit:(J)V
34: aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
dup
astore 15
monitorenter
35: aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
aconst_null
putfield okhttp3.internal.cache2.Relay.upstreamReader:Ljava/lang/Thread;
36: aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
invokevirtual java.lang.Object.notifyAll:()V
37: aload 15
monitorexit
38: goto 41
StackMap locals: okhttp3.internal.cache2.Relay$RelaySource okio.Buffer long long int long top top top top top top okhttp3.internal.cache2.Relay
StackMap stack: java.lang.Throwable
39: aload 15
monitorexit
40: athrow
41: StackMap locals: okhttp3.internal.cache2.Relay$RelaySource okio.Buffer long long int long
StackMap stack:
ldc -1
lreturn
42: StackMap locals:
StackMap stack:
lload 7
lload 2
invokestatic java.lang.Math.min:(JJ)J
lstore 9
start local 9 43: aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
getfield okhttp3.internal.cache2.Relay.upstreamBuffer:Lokio/Buffer;
aload 1
lconst_0
lload 9
invokevirtual okio.Buffer.copyTo:(Lokio/Buffer;JJ)Lokio/Buffer;
pop
44: aload 0
dup
getfield okhttp3.internal.cache2.Relay$RelaySource.sourcePos:J
lload 9
ladd
putfield okhttp3.internal.cache2.Relay$RelaySource.sourcePos:J
45: aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.fileOperator:Lokhttp3/internal/cache2/FileOperator;
46: ldc 32
lload 4
ladd
aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
getfield okhttp3.internal.cache2.Relay.upstreamBuffer:Lokio/Buffer;
invokevirtual okio.Buffer.clone:()Lokio/Buffer;
lload 7
47: invokevirtual okhttp3.internal.cache2.FileOperator.write:(JLokio/Buffer;J)V
48: aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
dup
astore 11
monitorenter
49: aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
getfield okhttp3.internal.cache2.Relay.buffer:Lokio/Buffer;
aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
getfield okhttp3.internal.cache2.Relay.upstreamBuffer:Lokio/Buffer;
lload 7
invokevirtual okio.Buffer.write:(Lokio/Buffer;J)V
50: aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
getfield okhttp3.internal.cache2.Relay.buffer:Lokio/Buffer;
invokevirtual okio.Buffer.size:()J
aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
getfield okhttp3.internal.cache2.Relay.bufferMaxSize:J
lcmp
ifle 52
51: aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
getfield okhttp3.internal.cache2.Relay.buffer:Lokio/Buffer;
aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
getfield okhttp3.internal.cache2.Relay.buffer:Lokio/Buffer;
invokevirtual okio.Buffer.size:()J
aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
getfield okhttp3.internal.cache2.Relay.bufferMaxSize:J
lsub
invokevirtual okio.Buffer.skip:(J)V
52: StackMap locals: long okhttp3.internal.cache2.Relay
StackMap stack:
aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
dup
getfield okhttp3.internal.cache2.Relay.upstreamPos:J
lload 7
ladd
putfield okhttp3.internal.cache2.Relay.upstreamPos:J
53: aload 11
monitorexit
54: goto 57
StackMap locals:
StackMap stack: java.lang.Throwable
55: aload 11
monitorexit
56: athrow
57: StackMap locals:
StackMap stack:
lload 9
lstore 13
58: aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
dup
astore 15
monitorenter
59: aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
aconst_null
putfield okhttp3.internal.cache2.Relay.upstreamReader:Ljava/lang/Thread;
60: aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
invokevirtual java.lang.Object.notifyAll:()V
61: aload 15
monitorexit
62: goto 65
StackMap locals: okhttp3.internal.cache2.Relay$RelaySource okio.Buffer long long int long long top top long okhttp3.internal.cache2.Relay
StackMap stack: java.lang.Throwable
63: aload 15
monitorexit
64: athrow
65: StackMap locals:
StackMap stack:
lload 13
lreturn
end local 9 end local 7 66: StackMap locals: okhttp3.internal.cache2.Relay$RelaySource okio.Buffer long long int
StackMap stack: java.lang.Throwable
astore 12
67: aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
dup
astore 15
monitorenter
68: aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
aconst_null
putfield okhttp3.internal.cache2.Relay.upstreamReader:Ljava/lang/Thread;
69: aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
invokevirtual java.lang.Object.notifyAll:()V
70: aload 15
monitorexit
71: goto 74
StackMap locals: okhttp3.internal.cache2.Relay$RelaySource okio.Buffer long long int top top top top top java.lang.Throwable top top okhttp3.internal.cache2.Relay
StackMap stack: java.lang.Throwable
72: aload 15
monitorexit
73: athrow
74: StackMap locals: okhttp3.internal.cache2.Relay$RelaySource okio.Buffer long long int top top top top top java.lang.Throwable
StackMap stack:
aload 12
athrow
end local 6 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 75 0 this Lokhttp3/internal/cache2/Relay$RelaySource;
0 75 1 sink Lokio/Buffer;
0 75 2 byteCount J
3 12 4 upstreamPos J
13 24 4 upstreamPos J
26 75 4 upstreamPos J
10 12 6 source I
17 19 6 source I
26 75 6 source I
15 24 8 bufferPos J
20 24 10 bytesToRead J
28 31 7 bytesToRead J
32 66 7 upstreamBytesRead J
43 66 9 bytesRead J
Exception table:
from to target type
2 4 24 any
5 11 24 any
12 18 24 any
19 23 24 any
24 25 24 any
35 38 39 any
39 40 39 any
49 54 55 any
55 56 55 any
59 62 63 any
63 64 63 any
31 34 66 any
42 58 66 any
68 71 72 any
72 73 72 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
sink
byteCount
public okio.Timeout timeout();
descriptor: ()Lokio/Timeout;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.timeout:Lokio/Timeout;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lokhttp3/internal/cache2/Relay$RelaySource;
public void close();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=1
start local 0 0: aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.fileOperator:Lokhttp3/internal/cache2/FileOperator;
ifnonnull 1
return
1: StackMap locals:
StackMap stack:
aload 0
aconst_null
putfield okhttp3.internal.cache2.Relay$RelaySource.fileOperator:Lokhttp3/internal/cache2/FileOperator;
2: aconst_null
astore 1
start local 1 3: aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
dup
astore 2
monitorenter
4: aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
dup
getfield okhttp3.internal.cache2.Relay.sourceCount:I
iconst_1
isub
putfield okhttp3.internal.cache2.Relay.sourceCount:I
5: aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
getfield okhttp3.internal.cache2.Relay.sourceCount:I
ifne 8
6: aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
getfield okhttp3.internal.cache2.Relay.file:Ljava/io/RandomAccessFile;
astore 1
7: aload 0
getfield okhttp3.internal.cache2.Relay$RelaySource.this$0:Lokhttp3/internal/cache2/Relay;
aconst_null
putfield okhttp3.internal.cache2.Relay.file:Ljava/io/RandomAccessFile;
8: StackMap locals: java.io.RandomAccessFile okhttp3.internal.cache2.Relay
StackMap stack:
aload 2
monitorexit
9: goto 12
StackMap locals:
StackMap stack: java.lang.Throwable
10: aload 2
monitorexit
11: athrow
12: StackMap locals:
StackMap stack:
aload 1
ifnull 14
13: aload 1
invokestatic okhttp3.internal.Util.closeQuietly:(Ljava/io/Closeable;)V
14: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lokhttp3/internal/cache2/Relay$RelaySource;
3 15 1 fileToClose Ljava/io/RandomAccessFile;
Exception table:
from to target type
4 9 10 any
10 11 10 any
Exceptions:
throws java.io.IOException
}
SourceFile: "Relay.java"
NestHost: okhttp3.internal.cache2.Relay
InnerClasses:
RelaySource = okhttp3.internal.cache2.Relay$RelaySource of okhttp3.internal.cache2.Relay