Class BlockSource
- java.lang.Object
-
- org.eclipse.jgit.internal.storage.io.BlockSource
-
- All Implemented Interfaces:
AutoCloseable
public abstract class BlockSource extends Object implements AutoCloseable
Provides content blocks of file.BlockSource
implementations must decide if they will be thread-safe, or not.
-
-
Constructor Summary
Constructors Constructor Description BlockSource()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
adviseSequentialRead(long startPos, long endPos)
Advise theBlockSource
a sequential scan is starting.abstract void
close()
static BlockSource
from(byte[] content)
Wrap a byte array as aBlockSource
.static BlockSource
from(FileInputStream in)
Read from aFileInputStream
.static BlockSource
from(FileChannel ch)
Read from aFileChannel
.abstract ByteBuffer
read(long position, int blockSize)
Read a block from the file.abstract long
size()
Determine the size of the file.
-
-
-
Method Detail
-
from
public static BlockSource from(byte[] content)
Wrap a byte array as aBlockSource
.- Parameters:
content
- input file.- Returns:
- block source to read from
content
.
-
from
public static BlockSource from(FileInputStream in)
Read from aFileInputStream
.The returned
BlockSource
is not thread-safe, as it must seek the file channel to read a block.- Parameters:
in
- the file. TheBlockSource
will closein
.- Returns:
- wrapper for
in
.
-
from
public static BlockSource from(FileChannel ch)
Read from aFileChannel
.The returned
BlockSource
is not thread-safe, as it must seek the file channel to read a block.- Parameters:
ch
- the file. TheBlockSource
will closech
.- Returns:
- wrapper for
ch
.
-
read
public abstract ByteBuffer read(long position, int blockSize) throws IOException
Read a block from the file.To reduce copying, the returned ByteBuffer should have an accessible array and
arrayOffset() == 0
. The caller will discard the ByteBuffer and directly use the backing array.- Parameters:
position
- position of the block in the file, specified in bytes from the beginning of the file.blockSize
- size to read.- Returns:
- buffer containing the block content.
- Throws:
IOException
- if block cannot be read.
-
size
public abstract long size() throws IOException
Determine the size of the file.- Returns:
- total number of bytes in the file.
- Throws:
IOException
- if size cannot be obtained.
-
adviseSequentialRead
public void adviseSequentialRead(long startPos, long endPos)
Advise theBlockSource
a sequential scan is starting.- Parameters:
startPos
- starting position.endPos
- ending position.
-
close
public abstract void close()
- Specified by:
close
in interfaceAutoCloseable
-
-