| // Copyright 2016 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| package org.chromium.net.impl; |
| |
| import org.chromium.net.QuicException; |
| |
| /** |
| * Implements {@link QuicException}. |
| */ |
| public class QuicExceptionImpl extends QuicException { |
| private final int mQuicDetailedErrorCode; |
| private final NetworkExceptionImpl mNetworkException; |
| |
| /** |
| * Constructs an exception with a specific error. |
| * |
| * @param message explanation of failure. |
| * @param netErrorCode Error code from |
| * <a href=https://chromium.googlesource.com/chromium/src/+/main/net/base/net_error_list.h> |
| * this list</a>. |
| * @param quicDetailedErrorCode Detailed <a href="https://www.chromium.org/quic">QUIC</a> error |
| * code from <a |
| * href="https://cs.chromium.org/search/?q=symbol:%5CbQuicErrorCode%5Cb"> |
| * QuicErrorCode</a>. |
| */ |
| public QuicExceptionImpl( |
| String message, int errorCode, int netErrorCode, int quicDetailedErrorCode) { |
| super(message, null); |
| mNetworkException = new NetworkExceptionImpl(message, errorCode, netErrorCode); |
| mQuicDetailedErrorCode = quicDetailedErrorCode; |
| } |
| |
| @Override |
| public String getMessage() { |
| StringBuilder b = new StringBuilder(mNetworkException.getMessage()); |
| b.append(", QuicDetailedErrorCode=").append(mQuicDetailedErrorCode); |
| return b.toString(); |
| } |
| |
| @Override |
| public int getErrorCode() { |
| return mNetworkException.getErrorCode(); |
| } |
| |
| @Override |
| public int getCronetInternalErrorCode() { |
| return mNetworkException.getCronetInternalErrorCode(); |
| } |
| |
| @Override |
| public boolean immediatelyRetryable() { |
| return mNetworkException.immediatelyRetryable(); |
| } |
| |
| @Override |
| public int getQuicDetailedErrorCode() { |
| return mQuicDetailedErrorCode; |
| } |
| } |