package com.google.common.io; import com.google.common.base.Preconditions; import com.google.common.primitives.UnsignedBytes; import java.io.IOException; import java.io.InputStream; import java.io.Reader; import java.nio.Buffer; import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.charset.Charset; import java.nio.charset.CharsetEncoder; import java.nio.charset.CodingErrorAction; import java.util.Arrays; /* loaded from: classes2.dex */ final class ReaderInputStream extends InputStream { private ByteBuffer byteBuffer; private CharBuffer charBuffer; private boolean doneFlushing; private boolean draining; private final CharsetEncoder encoder; private boolean endOfInput; private final Reader reader; private final byte[] singleByte; /* JADX INFO: Access modifiers changed from: package-private */ public ReaderInputStream(Reader reader, Charset charset, int i) { this(reader, charset.newEncoder().onMalformedInput(CodingErrorAction.REPLACE).onUnmappableCharacter(CodingErrorAction.REPLACE), i); } ReaderInputStream(Reader reader, CharsetEncoder charsetEncoder, int i) { this.singleByte = new byte[1]; this.reader = (Reader) Preconditions.checkNotNull(reader); this.encoder = (CharsetEncoder) Preconditions.checkNotNull(charsetEncoder); Preconditions.checkArgument(i > 0, "bufferSize must be positive: %s", i); charsetEncoder.reset(); CharBuffer allocate = CharBuffer.allocate(i); this.charBuffer = allocate; Java8Compatibility.flip(allocate); this.byteBuffer = ByteBuffer.allocate(i); } @Override // java.io.InputStream, java.io.Closeable, java.lang.AutoCloseable public final void close() throws IOException { this.reader.close(); } @Override // java.io.InputStream public final int read() throws IOException { if (read(this.singleByte) == 1) { return UnsignedBytes.toInt(this.singleByte[0]); } return -1; } /* JADX WARN: Code restructure failed: missing block: B:14:0x0028, code lost: if (r2 > 0) goto L54; */ /* JADX WARN: Code restructure failed: missing block: B:15:0x002a, code lost: return -1; */ /* JADX WARN: Code restructure failed: missing block: B:16:?, code lost: return r2; */ @Override // java.io.InputStream /* Code decompiled incorrectly, please refer to instructions dump. To view partially-correct add '--show-bad-code' argument */ public final int read(byte[] r8, int r9, int r10) throws java.io.IOException { /* r7 = this; int r0 = r9 + r10 int r1 = r8.length com.google.common.base.Preconditions.checkPositionIndexes(r9, r0, r1) r0 = 0 if (r10 != 0) goto La return r0 La: boolean r1 = r7.endOfInput r2 = r0 Ld: boolean r3 = r7.draining if (r3 == 0) goto L2c int r3 = r9 + r2 int r4 = r10 - r2 int r3 = r7.drain(r8, r3, r4) int r2 = r2 + r3 if (r2 == r10) goto L28 boolean r3 = r7.doneFlushing if (r3 != 0) goto L28 r7.draining = r0 java.nio.ByteBuffer r3 = r7.byteBuffer com.google.common.io.Java8Compatibility.clear(r3) goto L2c L28: if (r2 > 0) goto L2b r2 = -1 L2b: return r2 L2c: boolean r3 = r7.doneFlushing if (r3 == 0) goto L33 java.nio.charset.CoderResult r3 = java.nio.charset.CoderResult.UNDERFLOW goto L4a L33: if (r1 == 0) goto L3e java.nio.charset.CharsetEncoder r3 = r7.encoder java.nio.ByteBuffer r4 = r7.byteBuffer java.nio.charset.CoderResult r3 = r3.flush(r4) goto L4a L3e: java.nio.charset.CharsetEncoder r3 = r7.encoder java.nio.CharBuffer r4 = r7.charBuffer java.nio.ByteBuffer r5 = r7.byteBuffer boolean r6 = r7.endOfInput java.nio.charset.CoderResult r3 = r3.encode(r4, r5, r6) L4a: boolean r4 = r3.isOverflow() r5 = 1 if (r4 == 0) goto L55 r7.startDraining(r5) goto Ld L55: boolean r4 = r3.isUnderflow() if (r4 == 0) goto L6d if (r1 == 0) goto L63 r7.doneFlushing = r5 r7.startDraining(r0) goto Ld L63: boolean r3 = r7.endOfInput if (r3 == 0) goto L69 r1 = r5 goto L2c L69: r7.readMoreChars() goto L2c L6d: boolean r4 = r3.isError() if (r4 == 0) goto L2c r3.throwException() return r0 */ throw new UnsupportedOperationException("Method not decompiled: com.google.common.io.ReaderInputStream.read(byte[], int, int):int"); } private static CharBuffer grow(CharBuffer charBuffer) { CharBuffer wrap = CharBuffer.wrap(Arrays.copyOf(charBuffer.array(), charBuffer.capacity() << 1)); Java8Compatibility.position(wrap, charBuffer.position()); Java8Compatibility.limit(wrap, charBuffer.limit()); return wrap; } private void readMoreChars() throws IOException { if (availableCapacity(this.charBuffer) == 0) { if (this.charBuffer.position() > 0) { Java8Compatibility.flip(this.charBuffer.compact()); } else { this.charBuffer = grow(this.charBuffer); } } int limit = this.charBuffer.limit(); int read = this.reader.read(this.charBuffer.array(), limit, availableCapacity(this.charBuffer)); if (read == -1) { this.endOfInput = true; } else { Java8Compatibility.limit(this.charBuffer, limit + read); } } private static int availableCapacity(Buffer buffer) { return buffer.capacity() - buffer.limit(); } private void startDraining(boolean z) { Java8Compatibility.flip(this.byteBuffer); if (z && this.byteBuffer.remaining() == 0) { this.byteBuffer = ByteBuffer.allocate(this.byteBuffer.capacity() << 1); } else { this.draining = true; } } private int drain(byte[] bArr, int i, int i2) { int min = Math.min(i2, this.byteBuffer.remaining()); this.byteBuffer.get(bArr, i, min); return min; } }