Moved to File.MemoryMap instead of direct file I/O

This commit is contained in:
Caleb Gardner
2026-05-22 12:49:07 -05:00
parent 8186c3fe9a
commit 0df14b8adc
13 changed files with 126 additions and 427 deletions
+15 -12
View File
@@ -3,22 +3,25 @@
const std = @import("std");
const Io = std.Io;
const File = Io.File;
const Reader = File.Reader;
const Reader = Io.Reader;
const OffsetFile = @This();
fil: File,
offset: u64,
map: Io.File.MemoryMap,
pub fn init(fil: File, init_offset: u64) OffsetFile {
return .{ .fil = fil, .offset = init_offset };
pub fn init(io: Io, fil: File, archive_size: u64, init_offset: u64) !OffsetFile {
return .{
.map = try fil.createMemoryMap(io, .{
.protection = .{ .read = true, .write = false, .execute = false },
.len = archive_size,
.offset = init_offset,
}),
};
}
pub fn deinit(self: @This(), io: Io) void {
self.map.destroy(io);
}
pub fn readerAt(self: OffsetFile, io: Io, offset: u64, buffer: []u8) Reader.SeekError!Reader {
var rdr = self.fil.reader(io, buffer);
try rdr.seekTo(self.offset + offset);
return rdr;
}
pub fn readAt(self: OffsetFile, io: Io, offset: u64, buf: []u8) File.ReadPositionalError!void {
_ = try self.fil.readPositionalAll(io, buf, self.offset + offset);
pub fn readerAt(self: OffsetFile, offset: u64) Reader {
return .fixed(self.map.memory[offset..]);
}