private RouterErrorCode processServerError(ServerErrorCode errorCode) {
    RouterErrorCode resolvedRouterErrorCode;
    switch (errorCode) {
      case BlobAuthorizationFailure:
        logger.trace("Requested blob authorization failed");
        resolvedRouterErrorCode = RouterErrorCode.BlobAuthorizationFailure;
        break;
      case BlobDeleted:
        logger.trace("Requested blob was deleted");
        resolvedRouterErrorCode = RouterErrorCode.BlobDeleted;
        break;
      case BlobExpired:
        logger.trace("Requested blob has expired");
        resolvedRouterErrorCode = RouterErrorCode.BlobExpired;
        break;
      case BlobNotFound:
        logger.trace("Requested blob was not found on this server");
        resolvedRouterErrorCode = RouterErrorCode.BlobDoesNotExist;
        break;
      case DiskUnavailable:
      case ReplicaUnavailable:
        logger.trace("Disk or replica on which the requested blob resides is not accessible");
        resolvedRouterErrorCode = RouterErrorCode.AmbryUnavailable;
        break;
      default:
        resolvedRouterErrorCode = RouterErrorCode.UnexpectedInternalError;
    }
    return resolvedRouterErrorCode;
  }
Process the given {@link ServerErrorCode} and set operation status accordingly.
@param errorCode the {@link ServerErrorCode} to process.
@return the {@link RouterErrorCode} mapped from server error code.
ambry-router/src/main/java/com/github/ambry/router/GetBlobInfoOperation.java