package io.grpc; import com.google.common.base.Charsets; import com.google.common.base.MoreObjects; import com.google.common.base.Objects; import com.google.common.base.Preconditions; import com.google.common.base.Throwables; import io.grpc.Metadata; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.TreeMap; import net.sf.scuba.smartcards.ISO7816; import org.jmrtd.lds.CVCAFile; /* loaded from: classes6.dex */ public final class Status { static final boolean $assertionsDisabled = false; static final Metadata.Key CODE_KEY; static final Metadata.Key MESSAGE_KEY; private static final Metadata.TrustedAsciiMarshaller STATUS_MESSAGE_MARSHALLER; private final Throwable cause; private final Code code; private final String description; private static final String TEST_EQUALS_FAILURE_PROPERTY = "io.grpc.Status.failOnEqualsForTest"; private static final boolean FAIL_ON_EQUALS_FOR_TEST = Boolean.parseBoolean(System.getProperty(TEST_EQUALS_FAILURE_PROPERTY, "false")); private static final List STATUS_LIST = buildStatusList(); public static final Status OK = Code.OK.toStatus(); public static final Status CANCELLED = Code.CANCELLED.toStatus(); public static final Status UNKNOWN = Code.UNKNOWN.toStatus(); public static final Status INVALID_ARGUMENT = Code.INVALID_ARGUMENT.toStatus(); public static final Status DEADLINE_EXCEEDED = Code.DEADLINE_EXCEEDED.toStatus(); public static final Status NOT_FOUND = Code.NOT_FOUND.toStatus(); public static final Status ALREADY_EXISTS = Code.ALREADY_EXISTS.toStatus(); public static final Status PERMISSION_DENIED = Code.PERMISSION_DENIED.toStatus(); public static final Status UNAUTHENTICATED = Code.UNAUTHENTICATED.toStatus(); public static final Status RESOURCE_EXHAUSTED = Code.RESOURCE_EXHAUSTED.toStatus(); public static final Status FAILED_PRECONDITION = Code.FAILED_PRECONDITION.toStatus(); public static final Status ABORTED = Code.ABORTED.toStatus(); public static final Status OUT_OF_RANGE = Code.OUT_OF_RANGE.toStatus(); public static final Status UNIMPLEMENTED = Code.UNIMPLEMENTED.toStatus(); public static final Status INTERNAL = Code.INTERNAL.toStatus(); public static final Status UNAVAILABLE = Code.UNAVAILABLE.toStatus(); public static final Status DATA_LOSS = Code.DATA_LOSS.toStatus(); /* loaded from: classes6.dex */ public enum Code { OK(0), CANCELLED(1), UNKNOWN(2), INVALID_ARGUMENT(3), DEADLINE_EXCEEDED(4), NOT_FOUND(5), ALREADY_EXISTS(6), PERMISSION_DENIED(7), RESOURCE_EXHAUSTED(8), FAILED_PRECONDITION(9), ABORTED(10), OUT_OF_RANGE(11), UNIMPLEMENTED(12), INTERNAL(13), UNAVAILABLE(14), DATA_LOSS(15), UNAUTHENTICATED(16); private final int value; private final byte[] valueAscii; Code(int i) { this.value = i; this.valueAscii = Integer.toString(i).getBytes(Charsets.US_ASCII); } public final Status toStatus() { return (Status) Status.STATUS_LIST.get(this.value); } public final int value() { return this.value; } /* JADX INFO: Access modifiers changed from: private */ public byte[] valueAscii() { return this.valueAscii; } } static { CODE_KEY = Metadata.Key.of("grpc-status", false, (Metadata.TrustedAsciiMarshaller) new StatusCodeMarshaller()); StatusMessageMarshaller statusMessageMarshaller = new StatusMessageMarshaller(); STATUS_MESSAGE_MARSHALLER = statusMessageMarshaller; MESSAGE_KEY = Metadata.Key.of("grpc-message", false, (Metadata.TrustedAsciiMarshaller) statusMessageMarshaller); } private static List buildStatusList() { TreeMap treeMap = new TreeMap(); for (Code code : Code.values()) { Status status = (Status) treeMap.put(Integer.valueOf(code.value()), new Status(code)); if (status != null) { StringBuilder sb = new StringBuilder("Code value duplication between "); sb.append(status.getCode().name()); sb.append(" & "); sb.append(code.name()); throw new IllegalStateException(sb.toString()); } } return Collections.unmodifiableList(new ArrayList(treeMap.values())); } public static Status fromCodeValue(int i) { if (i >= 0) { List list = STATUS_LIST; if (i <= list.size()) { return list.get(i); } } return UNKNOWN.withDescription("Unknown code ".concat(String.valueOf(i))); } /* JADX INFO: Access modifiers changed from: private */ public static Status fromCodeValue(byte[] bArr) { return (bArr.length == 1 && bArr[0] == 48) ? OK : fromCodeValueSlow(bArr); } private static Status fromCodeValueSlow(byte[] bArr) { int i; byte b; int length = bArr.length; char c = 1; if (length != 1) { i = (length == 2 && (b = bArr[0]) >= 48 && b <= 57) ? (b - ISO7816.INS_DECREASE) * 10 : 0; return UNKNOWN.withDescription("Unknown code ".concat(new String(bArr, Charsets.US_ASCII))); } c = 0; byte b2 = bArr[c]; if (b2 >= 48 && b2 <= 57) { int i2 = i + (b2 - ISO7816.INS_DECREASE); List list = STATUS_LIST; if (i2 < list.size()) { return list.get(i2); } } return UNKNOWN.withDescription("Unknown code ".concat(new String(bArr, Charsets.US_ASCII))); } public static Status fromCode(Code code) { return code.toStatus(); } public static Status fromThrowable(Throwable th) { for (Throwable th2 = (Throwable) Preconditions.checkNotNull(th, "t"); th2 != null; th2 = th2.getCause()) { if (th2 instanceof StatusException) { return ((StatusException) th2).getStatus(); } if (th2 instanceof StatusRuntimeException) { return ((StatusRuntimeException) th2).getStatus(); } } return UNKNOWN.withCause(th); } public static Metadata trailersFromThrowable(Throwable th) { for (Throwable th2 = (Throwable) Preconditions.checkNotNull(th, "t"); th2 != null; th2 = th2.getCause()) { if (th2 instanceof StatusException) { return ((StatusException) th2).getTrailers(); } if (th2 instanceof StatusRuntimeException) { return ((StatusRuntimeException) th2).getTrailers(); } } return null; } /* JADX INFO: Access modifiers changed from: package-private */ public static String formatThrowableMessage(Status status) { if (status.description == null) { return status.code.toString(); } StringBuilder sb = new StringBuilder(); sb.append(status.code); sb.append(": "); sb.append(status.description); return sb.toString(); } private Status(Code code) { this(code, null, null); } private Status(Code code, String str, Throwable th) { this.code = (Code) Preconditions.checkNotNull(code, "code"); this.description = str; this.cause = th; } public final Status withCause(Throwable th) { return Objects.equal(this.cause, th) ? this : new Status(this.code, this.description, th); } public final Status withDescription(String str) { return Objects.equal(this.description, str) ? this : new Status(this.code, str, this.cause); } public final Status augmentDescription(String str) { if (str == null) { return this; } if (this.description == null) { return new Status(this.code, str, this.cause); } Code code = this.code; StringBuilder sb = new StringBuilder(); sb.append(this.description); sb.append("\n"); sb.append(str); return new Status(code, sb.toString(), this.cause); } public final boolean isOk() { return Code.OK == this.code; } public final StatusRuntimeException asRuntimeException() { return new StatusRuntimeException(this); } public final StatusRuntimeException asRuntimeException(Metadata metadata) { return new StatusRuntimeException(this, metadata); } public final StatusException asException() { return new StatusException(this); } public final StatusException asException(Metadata metadata) { return new StatusException(this, metadata); } public final String toString() { MoreObjects.ToStringHelper add = MoreObjects.toStringHelper(this).add("code", this.code.name()).add("description", this.description); Throwable th = this.cause; Object obj = th; if (th != null) { obj = Throwables.getStackTraceAsString(th); } return add.add("cause", obj).toString(); } /* loaded from: classes6.dex */ static final class StatusCodeMarshaller implements Metadata.TrustedAsciiMarshaller { private StatusCodeMarshaller() { } @Override // io.grpc.Metadata.TrustedAsciiMarshaller public final byte[] toAsciiString(Status status) { return status.getCode().valueAscii(); } /* JADX WARN: Can't rename method to resolve collision */ @Override // io.grpc.Metadata.TrustedAsciiMarshaller public final Status parseAsciiString(byte[] bArr) { return Status.fromCodeValue(bArr); } } /* loaded from: classes6.dex */ static final class StatusMessageMarshaller implements Metadata.TrustedAsciiMarshaller { private static final byte[] HEX = {ISO7816.INS_DECREASE, 49, ISO7816.INS_INCREASE, 51, ISO7816.INS_DECREASE_STAMPED, 53, 54, 55, 56, 57, 65, CVCAFile.CAR_TAG, 67, ISO7816.INS_REHABILITATE_CHV, 69, 70}; private static boolean isEscapingChar(byte b) { return b < 32 || b >= 126 || b == 37; } private StatusMessageMarshaller() { } @Override // io.grpc.Metadata.TrustedAsciiMarshaller public final byte[] toAsciiString(String str) { byte[] bytes = str.getBytes(Charsets.UTF_8); for (int i = 0; i < bytes.length; i++) { if (isEscapingChar(bytes[i])) { return toAsciiStringSlow(bytes, i); } } return bytes; } private static byte[] toAsciiStringSlow(byte[] bArr, int i) { byte[] bArr2 = new byte[((bArr.length - i) * 3) + i]; if (i != 0) { System.arraycopy(bArr, 0, bArr2, 0, i); } int i2 = i; while (i < bArr.length) { byte b = bArr[i]; if (isEscapingChar(b)) { bArr2[i2] = 37; byte[] bArr3 = HEX; bArr2[i2 + 1] = bArr3[(b >> 4) & 15]; bArr2[i2 + 2] = bArr3[b & 15]; i2 += 3; } else { bArr2[i2] = b; i2++; } i++; } return Arrays.copyOf(bArr2, i2); } @Override // io.grpc.Metadata.TrustedAsciiMarshaller public final String parseAsciiString(byte[] bArr) { for (int i = 0; i < bArr.length; i++) { byte b = bArr[i]; if (b < 32 || b >= 126 || (b == 37 && i + 2 < bArr.length)) { return parseAsciiStringSlow(bArr); } } return new String(bArr, 0); } private static String parseAsciiStringSlow(byte[] bArr) { ByteBuffer allocate = ByteBuffer.allocate(bArr.length); int i = 0; while (i < bArr.length) { if (bArr[i] == 37 && i + 2 < bArr.length) { try { allocate.put((byte) Integer.parseInt(new String(bArr, i + 1, 2, Charsets.US_ASCII), 16)); i += 3; } catch (NumberFormatException unused) { } } allocate.put(bArr[i]); i++; } return new String(allocate.array(), 0, allocate.position(), Charsets.UTF_8); } } public final boolean equals(Object obj) { return super.equals(obj); } public final int hashCode() { return super.hashCode(); } public final String getDescription() { return this.description; } public final Code getCode() { return this.code; } public final Throwable getCause() { return this.cause; } }