load method

Loads encoded thumbnail bytes for key.

Implementation

Future<Uint8List> load(CPDFPageThumbnailKey key) async {
  if (key.options.cachePolicy.readsMemory) {
    final cachedBytes = _memoryCache[key.cacheKey];
    if (cachedBytes != null) {
      _logHit(key, source: 'memory');
      return cachedBytes;
    }
  }

  final inFlight = _inFlightRequests[key.cacheKey];
  if (inFlight != null) {
    _logHit(key, source: 'inFlight');
    return inFlight;
  }

  final task = _loadOrRender(key);
  _inFlightRequests[key.cacheKey] = task;
  try {
    final bytes = await task;
    if (key.options.cachePolicy.writesMemory) {
      _memoryCache[key.cacheKey] = bytes;
    }
    return bytes;
  } finally {
    _inFlightRequests.remove(key.cacheKey);
  }
}