Http2Reader$ContinuationSource.smali
6.6 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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
.class final Lokhttp3/internal/http2/Http2Reader$ContinuationSource;
.super Ljava/lang/Object;
.source "Http2Reader.java"
# interfaces
.implements Lokio/Source;
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lokhttp3/internal/http2/Http2Reader;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x18
name = "ContinuationSource"
.end annotation
# instance fields
.field flags:B
.field left:I
.field length:I
.field padding:S
.field private final source:Lokio/BufferedSource;
.field streamId:I
# direct methods
.method constructor <init>(Lokio/BufferedSource;)V
.locals 0
.line 359
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 360
iput-object p1, p0, Lokhttp3/internal/http2/Http2Reader$ContinuationSource;->source:Lokio/BufferedSource;
return-void
.end method
.method private readContinuationHeader()V
.locals 7
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 386
iget v0, p0, Lokhttp3/internal/http2/Http2Reader$ContinuationSource;->streamId:I
.line 388
iget-object v1, p0, Lokhttp3/internal/http2/Http2Reader$ContinuationSource;->source:Lokio/BufferedSource;
invoke-static {v1}, Lokhttp3/internal/http2/Http2Reader;->readMedium(Lokio/BufferedSource;)I
move-result v1
iput v1, p0, Lokhttp3/internal/http2/Http2Reader$ContinuationSource;->left:I
iput v1, p0, Lokhttp3/internal/http2/Http2Reader$ContinuationSource;->length:I
.line 389
iget-object v1, p0, Lokhttp3/internal/http2/Http2Reader$ContinuationSource;->source:Lokio/BufferedSource;
invoke-interface {v1}, Lokio/BufferedSource;->readByte()B
move-result v1
and-int/lit16 v1, v1, 0xff
int-to-byte v1, v1
.line 390
iget-object v2, p0, Lokhttp3/internal/http2/Http2Reader$ContinuationSource;->source:Lokio/BufferedSource;
invoke-interface {v2}, Lokio/BufferedSource;->readByte()B
move-result v2
and-int/lit16 v2, v2, 0xff
int-to-byte v2, v2
iput-byte v2, p0, Lokhttp3/internal/http2/Http2Reader$ContinuationSource;->flags:B
.line 391
sget-object v2, Lokhttp3/internal/http2/Http2Reader;->logger:Ljava/util/logging/Logger;
sget-object v3, Ljava/util/logging/Level;->FINE:Ljava/util/logging/Level;
invoke-virtual {v2, v3}, Ljava/util/logging/Logger;->isLoggable(Ljava/util/logging/Level;)Z
move-result v2
const/4 v3, 0x1
if-eqz v2, :cond_0
sget-object v2, Lokhttp3/internal/http2/Http2Reader;->logger:Ljava/util/logging/Logger;
iget v4, p0, Lokhttp3/internal/http2/Http2Reader$ContinuationSource;->streamId:I
iget v5, p0, Lokhttp3/internal/http2/Http2Reader$ContinuationSource;->length:I
iget-byte v6, p0, Lokhttp3/internal/http2/Http2Reader$ContinuationSource;->flags:B
invoke-static {v3, v4, v5, v1, v6}, Lokhttp3/internal/http2/Http2;->frameLog(ZIIBB)Ljava/lang/String;
move-result-object v4
invoke-virtual {v2, v4}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V
.line 392
:cond_0
iget-object v2, p0, Lokhttp3/internal/http2/Http2Reader$ContinuationSource;->source:Lokio/BufferedSource;
invoke-interface {v2}, Lokio/BufferedSource;->readInt()I
move-result v2
const v4, 0x7fffffff
and-int/2addr v2, v4
iput v2, p0, Lokhttp3/internal/http2/Http2Reader$ContinuationSource;->streamId:I
const/16 v2, 0x9
const/4 v4, 0x0
if-ne v1, v2, :cond_2
.line 394
iget v1, p0, Lokhttp3/internal/http2/Http2Reader$ContinuationSource;->streamId:I
if-ne v1, v0, :cond_1
return-void
:cond_1
new-array v0, v4, [Ljava/lang/Object;
const-string v1, "TYPE_CONTINUATION streamId changed"
invoke-static {v1, v0}, Lokhttp3/internal/http2/Http2;->ioException(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/IOException;
move-result-object v0
throw v0
.line 393
:cond_2
new-array v0, v3, [Ljava/lang/Object;
invoke-static {v1}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte;
move-result-object v1
aput-object v1, v0, v4
const-string v1, "%s != TYPE_CONTINUATION"
invoke-static {v1, v0}, Lokhttp3/internal/http2/Http2;->ioException(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/IOException;
move-result-object v0
throw v0
.end method
# virtual methods
.method public close()V
.locals 0
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
return-void
.end method
.method public read(Lokio/Buffer;J)J
.locals 6
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 364
:goto_0
iget v0, p0, Lokhttp3/internal/http2/Http2Reader$ContinuationSource;->left:I
const-wide/16 v1, -0x1
if-nez v0, :cond_1
.line 365
iget-object v0, p0, Lokhttp3/internal/http2/Http2Reader$ContinuationSource;->source:Lokio/BufferedSource;
iget-short v3, p0, Lokhttp3/internal/http2/Http2Reader$ContinuationSource;->padding:S
int-to-long v3, v3
invoke-interface {v0, v3, v4}, Lokio/BufferedSource;->skip(J)V
const/4 v0, 0x0
.line 366
iput-short v0, p0, Lokhttp3/internal/http2/Http2Reader$ContinuationSource;->padding:S
.line 367
iget-byte v0, p0, Lokhttp3/internal/http2/Http2Reader$ContinuationSource;->flags:B
and-int/lit8 v0, v0, 0x4
if-eqz v0, :cond_0
return-wide v1
.line 368
:cond_0
invoke-direct {p0}, Lokhttp3/internal/http2/Http2Reader$ContinuationSource;->readContinuationHeader()V
goto :goto_0
.line 372
:cond_1
iget-object v3, p0, Lokhttp3/internal/http2/Http2Reader$ContinuationSource;->source:Lokio/BufferedSource;
int-to-long v4, v0
invoke-static {p2, p3, v4, v5}, Ljava/lang/Math;->min(JJ)J
move-result-wide p2
invoke-interface {v3, p1, p2, p3}, Lokio/BufferedSource;->read(Lokio/Buffer;J)J
move-result-wide p1
cmp-long p3, p1, v1
if-nez p3, :cond_2
return-wide v1
.line 374
:cond_2
iget p3, p0, Lokhttp3/internal/http2/Http2Reader$ContinuationSource;->left:I
int-to-long v0, p3
sub-long/2addr v0, p1
long-to-int p3, v0
iput p3, p0, Lokhttp3/internal/http2/Http2Reader$ContinuationSource;->left:I
return-wide p1
.end method
.method public timeout()Lokio/Timeout;
.locals 1
.line 379
iget-object v0, p0, Lokhttp3/internal/http2/Http2Reader$ContinuationSource;->source:Lokio/BufferedSource;
invoke-interface {v0}, Lokio/BufferedSource;->timeout()Lokio/Timeout;
move-result-object v0
return-object v0
.end method