Package 

Class BufferingResource

  • All Implemented Interfaces:
    org.readium.r2.shared.fetcher.Resource , org.readium.r2.shared.util.SuspendingCloseable

    
    public final class BufferingResource
    extends ProxyResource
                        

    Wraps a Resource and buffers its content.

    Expensive interaction with the underlying resource is minimized, since most (smaller) requests can be satisfied by accessing the buffer alone. The drawback is that some extra space is required to hold the buffer and that copying takes place when filling that buffer, but this is usually outweighed by the performance benefits.

    Note that this implementation is pretty limited and the benefits are only apparent when reading forward and consecutively – e.g. when downloading the resource by chunks. The buffer is ignored when reading backward or far ahead.

    • Field Summary

      Fields 
      Modifier and Type Field Description
      private final File file
    • Enum Constant Summary

      Enum Constants 
      Enum Constant Description
    • Method Summary

      Modifier and Type Method Description
      Try<ByteArray, Resource.Exception> read(LongRange range) Reads the bytes at the given range.
      • Methods inherited from class org.readium.r2.shared.fetcher.ProxyResource

        close, getFile, length, link, toString
      • Methods inherited from class org.readium.r2.shared.fetcher.Resource

        readAsBitmap, readAsJson, readAsString, readAsXml
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • BufferingResource

        BufferingResource(Resource resource, Long resourceLength, Long bufferSize)
        Parameters:
        resource - Underlying resource which will be buffered.
        resourceLength - The total length of the resource, when known.
        bufferSize - Size of the buffer chunks to read.