Files
runelite/runescape-client/src/main/java/AccessFile.java
Owain van Brakel 3834b46aee project: Rev 204
2022-03-23 15:01:48 +01:00

143 lines
3.3 KiB
Java

import java.io.EOFException;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.io.SyncFailedException;
import net.runelite.mapping.Export;
import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("pr")
@Implements("AccessFile")
public final class AccessFile {
@ObfuscatedName("g")
@Export("JagexCache_locationFile")
static File JagexCache_locationFile;
@ObfuscatedName("v")
@Export("file")
RandomAccessFile file;
@ObfuscatedName("o")
@ObfuscatedGetter(
longValue = -4942939596306501935L
)
@Export("maxSize")
final long maxSize;
@ObfuscatedName("h")
@ObfuscatedGetter(
longValue = 4304485669335873983L
)
@Export("offset")
long offset;
public AccessFile(File var1, String var2, long var3) throws IOException {
if (-1L == var3) { // L: 11
var3 = Long.MAX_VALUE;
}
if (var1.length() > var3) { // L: 12
var1.delete(); // L: 13
}
this.file = new RandomAccessFile(var1, var2); // L: 15
this.maxSize = var3; // L: 16
this.offset = 0L; // L: 17
int var5 = this.file.read(); // L: 18
if (var5 != -1 && !var2.equals("r")) { // L: 19
this.file.seek(0L); // L: 20
this.file.write(var5); // L: 21
}
this.file.seek(0L); // L: 23
} // L: 24
@ObfuscatedName("v")
@Export("seek")
final void seek(long var1) throws IOException {
this.file.seek(var1); // L: 27
this.offset = var1; // L: 28
} // L: 29
@ObfuscatedName("o")
@ObfuscatedSignature(
descriptor = "([BIII)V",
garbageValue = "2079249014"
)
@Export("write")
public final void write(byte[] var1, int var2, int var3) throws IOException {
if ((long)var3 + this.offset > this.maxSize) { // L: 32
this.file.seek(this.maxSize); // L: 33
this.file.write(1); // L: 34
throw new EOFException(); // L: 35
} else {
this.file.write(var1, var2, var3); // L: 37
this.offset += (long)var3; // L: 38
}
} // L: 39
@ObfuscatedName("h")
@ObfuscatedSignature(
descriptor = "(I)V",
garbageValue = "2140473011"
)
@Export("close")
public final void close() throws IOException {
this.closeSync(false); // L: 42
} // L: 43
@ObfuscatedName("g")
@ObfuscatedSignature(
descriptor = "(ZS)V",
garbageValue = "14731"
)
@Export("closeSync")
public final void closeSync(boolean var1) throws IOException {
if (this.file != null) { // L: 46
if (var1) { // L: 47
try {
this.file.getFD().sync(); // L: 49
} catch (SyncFailedException var3) { // L: 51
}
}
this.file.close(); // L: 53
this.file = null; // L: 54
}
} // L: 56
@ObfuscatedName("l")
@ObfuscatedSignature(
descriptor = "(I)J",
garbageValue = "446364801"
)
@Export("length")
public final long length() throws IOException {
return this.file.length(); // L: 59
}
@ObfuscatedName("n")
@ObfuscatedSignature(
descriptor = "([BIIB)I",
garbageValue = "-83"
)
@Export("read")
public final int read(byte[] var1, int var2, int var3) throws IOException {
int var4 = this.file.read(var1, var2, var3); // L: 63
if (var4 > 0) {
this.offset += (long)var4; // L: 64
}
return var4; // L: 65
}
protected void finalize() throws Throwable {
if (this.file != null) { // L: 69
System.out.println(""); // L: 70
this.close(); // L: 71
}
} // L: 73
}