FileOperator.smali
2.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
.class final Lokhttp3/internal/cache2/FileOperator;
.super Ljava/lang/Object;
.source "FileOperator.java"
# instance fields
.field private final fileChannel:Ljava/nio/channels/FileChannel;
# direct methods
.method constructor <init>(Ljava/nio/channels/FileChannel;)V
.locals 0
.line 39
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 40
iput-object p1, p0, Lokhttp3/internal/cache2/FileOperator;->fileChannel:Ljava/nio/channels/FileChannel;
return-void
.end method
# virtual methods
.method public read(JLokio/Buffer;J)V
.locals 9
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
const-wide/16 v0, 0x0
cmp-long v2, p4, v0
if-ltz v2, :cond_1
:goto_0
cmp-long v2, p4, v0
if-lez v2, :cond_0
.line 63
iget-object v3, p0, Lokhttp3/internal/cache2/FileOperator;->fileChannel:Ljava/nio/channels/FileChannel;
move-wide v4, p1
move-wide v6, p4
move-object v8, p3
invoke-virtual/range {v3 .. v8}, Ljava/nio/channels/FileChannel;->transferTo(JJLjava/nio/channels/WritableByteChannel;)J
move-result-wide v2
add-long/2addr p1, v2
sub-long/2addr p4, v2
goto :goto_0
:cond_0
return-void
.line 60
:cond_1
new-instance p1, Ljava/lang/IndexOutOfBoundsException;
invoke-direct {p1}, Ljava/lang/IndexOutOfBoundsException;-><init>()V
throw p1
.end method
.method public write(JLokio/Buffer;J)V
.locals 9
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
const-wide/16 v0, 0x0
cmp-long v2, p4, v0
if-ltz v2, :cond_1
.line 45
invoke-virtual {p3}, Lokio/Buffer;->size()J
move-result-wide v2
cmp-long v2, p4, v2
if-gtz v2, :cond_1
:goto_0
cmp-long v2, p4, v0
if-lez v2, :cond_0
.line 48
iget-object v3, p0, Lokhttp3/internal/cache2/FileOperator;->fileChannel:Ljava/nio/channels/FileChannel;
move-object v4, p3
move-wide v5, p1
move-wide v7, p4
invoke-virtual/range {v3 .. v8}, Ljava/nio/channels/FileChannel;->transferFrom(Ljava/nio/channels/ReadableByteChannel;JJ)J
move-result-wide v2
add-long/2addr p1, v2
sub-long/2addr p4, v2
goto :goto_0
:cond_0
return-void
.line 45
:cond_1
new-instance p1, Ljava/lang/IndexOutOfBoundsException;
invoke-direct {p1}, Ljava/lang/IndexOutOfBoundsException;-><init>()V
throw p1
.end method