diff options
Diffstat (limited to 'src/main/java/io/trygvis/btree/HeapFile.java')
-rw-r--r-- | src/main/java/io/trygvis/btree/HeapFile.java | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/main/java/io/trygvis/btree/HeapFile.java b/src/main/java/io/trygvis/btree/HeapFile.java index 7a960c8..6bd0451 100644 --- a/src/main/java/io/trygvis/btree/HeapFile.java +++ b/src/main/java/io/trygvis/btree/HeapFile.java @@ -37,15 +37,18 @@ public class HeapFile implements Closeable { return HeapPage.heapPageFromBytes(page, buffer); } - public void writePage(HeapPage page) throws IOException { + public long writePage(HeapPage page) throws IOException { long position; if (page.pageNumber == -1) { - position = file.length(); + position = channel.size(); } else { position = page.pageNumber * PAGE_SIZE; } + page.bytes.rewind(); channel.write(page.bytes, position); channel.force(true); + + return position / PAGE_SIZE; } public long pageCount() throws IOException { |