Skip to content

Commit 342d4e6

Browse files
committed
Refactor InputSource to use abstract position method
1 parent 7515c28 commit 342d4e6

2 files changed

Lines changed: 12 additions & 4 deletions

File tree

src/main/java/org/glavo/nbt/internal/input/InputSource.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,13 @@
2323

2424
public sealed abstract class InputSource implements Closeable {
2525
private boolean closed = false;
26-
protected long bytesRead = 0L;
2726

2827
public boolean supportDirectBuffer() {
2928
return false;
3029
}
3130

31+
public abstract long position() throws IOException;
32+
3233
@Override
3334
public final void close() throws IOException {
3435
if (!closed) {
@@ -73,12 +74,18 @@ public final void fillBuffer(InputBuffer buffer, int required) throws IOExceptio
7374
public static final class OfInputStream extends InputSource {
7475
private final InputStream inputStream;
7576
private final boolean closeInputStream;
77+
private long position;
7678

7779
public OfInputStream(InputStream inputStream, boolean closeInputStream) {
7880
this.inputStream = inputStream;
7981
this.closeInputStream = closeInputStream;
8082
}
8183

84+
@Override
85+
public long position() throws IOException {
86+
return position;
87+
}
88+
8289
@Override
8390
protected void closeImpl() throws IOException {
8491
if (closeInputStream) {
@@ -99,7 +106,7 @@ protected void fillBufferImpl(ByteBuffer target, int required) throws IOExceptio
99106
throw new EOFException("Unexpected end of stream");
100107
}
101108
target.limit(target.limit() + read);
102-
bytesRead += read;
109+
position += read;
103110
}
104111
}
105112
}

src/main/java/org/glavo/nbt/internal/input/NBTReader.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import java.io.Closeable;
2424
import java.io.IOException;
2525
import java.nio.ByteBuffer;
26-
import java.nio.ByteOrder;
2726
import java.nio.charset.StandardCharsets;
2827

2928
public final class NBTReader implements Closeable {
@@ -37,14 +36,16 @@ public final class NBTReader implements Closeable {
3736
private final InputSource source;
3837
private final InputBuffer buffer;
3938
private final MinecraftEdition edition;
39+
private final long initialPosition;
4040

4141
/// Used for reading UTF-8 strings
4242
private @Nullable StringBuilder charsBuffer;
4343

44-
public NBTReader(InputSource source, MinecraftEdition edition) {
44+
public NBTReader(InputSource source, MinecraftEdition edition) throws IOException {
4545
this.source = source;
4646
this.buffer = InputBuffer.allocate(IOUtils.DEFAULT_BUFFER_SIZE, source.supportDirectBuffer(), edition.byteOrder());
4747
this.edition = edition;
48+
this.initialPosition = source.position();
4849
}
4950

5051
public MinecraftEdition getEdition() {

0 commit comments

Comments
 (0)