Java源码示例:com.google.android.exoplayer2.offline.DownloadRequest.UnsupportedRequestException

示例1
/**
 * Loads {@link DownloadRequest DownloadRequests} from the file.
 *
 * @return The loaded {@link DownloadRequest DownloadRequests}, or an empty array if the file does
 *     not exist.
 * @throws IOException If there is an error reading the file.
 */
public DownloadRequest[] load() throws IOException {
  if (!exists()) {
    return new DownloadRequest[0];
  }
  @Nullable InputStream inputStream = null;
  try {
    inputStream = atomicFile.openRead();
    DataInputStream dataInputStream = new DataInputStream(inputStream);
    int version = dataInputStream.readInt();
    if (version > VERSION) {
      throw new IOException("Unsupported action file version: " + version);
    }
    int actionCount = dataInputStream.readInt();
    ArrayList<DownloadRequest> actions = new ArrayList<>();
    for (int i = 0; i < actionCount; i++) {
      try {
        actions.add(readDownloadRequest(dataInputStream));
      } catch (UnsupportedRequestException e) {
        // remove DownloadRequest is not supported. Ignore and continue loading rest.
      }
    }
    return actions.toArray(new DownloadRequest[0]);
  } finally {
    Util.closeQuietly(inputStream);
  }
}
 
示例2
/**
 * Loads {@link DownloadRequest DownloadRequests} from the file.
 *
 * @return The loaded {@link DownloadRequest DownloadRequests}, or an empty array if the file does
 *     not exist.
 * @throws IOException If there is an error reading the file.
 */
public DownloadRequest[] load() throws IOException {
  if (!exists()) {
    return new DownloadRequest[0];
  }
  InputStream inputStream = null;
  try {
    inputStream = atomicFile.openRead();
    DataInputStream dataInputStream = new DataInputStream(inputStream);
    int version = dataInputStream.readInt();
    if (version > VERSION) {
      throw new IOException("Unsupported action file version: " + version);
    }
    int actionCount = dataInputStream.readInt();
    ArrayList<DownloadRequest> actions = new ArrayList<>();
    for (int i = 0; i < actionCount; i++) {
      try {
        actions.add(readDownloadRequest(dataInputStream));
      } catch (UnsupportedRequestException e) {
        // remove DownloadRequest is not supported. Ignore and continue loading rest.
      }
    }
    return actions.toArray(new DownloadRequest[0]);
  } finally {
    Util.closeQuietly(inputStream);
  }
}
 
示例3
/**
 * Loads {@link DownloadRequest DownloadRequests} from the file.
 *
 * @return The loaded {@link DownloadRequest DownloadRequests}, or an empty array if the file does
 *     not exist.
 * @throws IOException If there is an error reading the file.
 */
public DownloadRequest[] load() throws IOException {
  if (!exists()) {
    return new DownloadRequest[0];
  }
  InputStream inputStream = null;
  try {
    inputStream = atomicFile.openRead();
    DataInputStream dataInputStream = new DataInputStream(inputStream);
    int version = dataInputStream.readInt();
    if (version > VERSION) {
      throw new IOException("Unsupported action file version: " + version);
    }
    int actionCount = dataInputStream.readInt();
    ArrayList<DownloadRequest> actions = new ArrayList<>();
    for (int i = 0; i < actionCount; i++) {
      try {
        actions.add(readDownloadRequest(dataInputStream));
      } catch (UnsupportedRequestException e) {
        // remove DownloadRequest is not supported. Ignore and continue loading rest.
      }
    }
    return actions.toArray(new DownloadRequest[0]);
  } finally {
    Util.closeQuietly(inputStream);
  }
}
 
示例4
private static DownloadRequest readDownloadRequest(DataInputStream input) throws IOException {
  String type = input.readUTF();
  int version = input.readInt();

  Uri uri = Uri.parse(input.readUTF());
  boolean isRemoveAction = input.readBoolean();

  int dataLength = input.readInt();
  @Nullable byte[] data;
  if (dataLength != 0) {
    data = new byte[dataLength];
    input.readFully(data);
  } else {
    data = null;
  }

  // Serialized version 0 progressive actions did not contain keys.
  boolean isLegacyProgressive = version == 0 && DownloadRequest.TYPE_PROGRESSIVE.equals(type);
  List<StreamKey> keys = new ArrayList<>();
  if (!isLegacyProgressive) {
    int keyCount = input.readInt();
    for (int i = 0; i < keyCount; i++) {
      keys.add(readKey(type, version, input));
    }
  }

  // Serialized version 0 and 1 DASH/HLS/SS actions did not contain a custom cache key.
  boolean isLegacySegmented =
      version < 2
          && (DownloadRequest.TYPE_DASH.equals(type)
              || DownloadRequest.TYPE_HLS.equals(type)
              || DownloadRequest.TYPE_SS.equals(type));
  @Nullable String customCacheKey = null;
  if (!isLegacySegmented) {
    customCacheKey = input.readBoolean() ? input.readUTF() : null;
  }

  // Serialized version 0, 1 and 2 did not contain an id. We need to generate one.
  String id = version < 3 ? generateDownloadId(uri, customCacheKey) : input.readUTF();

  if (isRemoveAction) {
    // Remove actions are not supported anymore.
    throw new UnsupportedRequestException();
  }
  return new DownloadRequest(id, type, uri, keys, customCacheKey, data);
}
 
示例5
private static DownloadRequest readDownloadRequest(DataInputStream input) throws IOException {
  String type = input.readUTF();
  int version = input.readInt();

  Uri uri = Uri.parse(input.readUTF());
  boolean isRemoveAction = input.readBoolean();

  int dataLength = input.readInt();
  byte[] data;
  if (dataLength != 0) {
    data = new byte[dataLength];
    input.readFully(data);
  } else {
    data = null;
  }

  // Serialized version 0 progressive actions did not contain keys.
  boolean isLegacyProgressive = version == 0 && DownloadRequest.TYPE_PROGRESSIVE.equals(type);
  List<StreamKey> keys = new ArrayList<>();
  if (!isLegacyProgressive) {
    int keyCount = input.readInt();
    for (int i = 0; i < keyCount; i++) {
      keys.add(readKey(type, version, input));
    }
  }

  // Serialized version 0 and 1 DASH/HLS/SS actions did not contain a custom cache key.
  boolean isLegacySegmented =
      version < 2
          && (DownloadRequest.TYPE_DASH.equals(type)
              || DownloadRequest.TYPE_HLS.equals(type)
              || DownloadRequest.TYPE_SS.equals(type));
  String customCacheKey = null;
  if (!isLegacySegmented) {
    customCacheKey = input.readBoolean() ? input.readUTF() : null;
  }

  // Serialized version 0, 1 and 2 did not contain an id. We need to generate one.
  String id = version < 3 ? generateDownloadId(uri, customCacheKey) : input.readUTF();

  if (isRemoveAction) {
    // Remove actions are not supported anymore.
    throw new UnsupportedRequestException();
  }
  return new DownloadRequest(id, type, uri, keys, customCacheKey, data);
}
 
示例6
private static DownloadRequest readDownloadRequest(DataInputStream input) throws IOException {
  String type = input.readUTF();
  int version = input.readInt();

  Uri uri = Uri.parse(input.readUTF());
  boolean isRemoveAction = input.readBoolean();

  int dataLength = input.readInt();
  byte[] data;
  if (dataLength != 0) {
    data = new byte[dataLength];
    input.readFully(data);
  } else {
    data = null;
  }

  // Serialized version 0 progressive actions did not contain keys.
  boolean isLegacyProgressive = version == 0 && DownloadRequest.TYPE_PROGRESSIVE.equals(type);
  List<StreamKey> keys = new ArrayList<>();
  if (!isLegacyProgressive) {
    int keyCount = input.readInt();
    for (int i = 0; i < keyCount; i++) {
      keys.add(readKey(type, version, input));
    }
  }

  // Serialized version 0 and 1 DASH/HLS/SS actions did not contain a custom cache key.
  boolean isLegacySegmented =
      version < 2
          && (DownloadRequest.TYPE_DASH.equals(type)
              || DownloadRequest.TYPE_HLS.equals(type)
              || DownloadRequest.TYPE_SS.equals(type));
  String customCacheKey = null;
  if (!isLegacySegmented) {
    customCacheKey = input.readBoolean() ? input.readUTF() : null;
  }

  // Serialized version 0, 1 and 2 did not contain an id. We need to generate one.
  String id = version < 3 ? generateDownloadId(uri, customCacheKey) : input.readUTF();

  if (isRemoveAction) {
    // Remove actions are not supported anymore.
    throw new UnsupportedRequestException();
  }
  return new DownloadRequest(id, type, uri, keys, customCacheKey, data);
}