Files
runelite/runescape-client/src/main/java/BufferedSource.java
Owain van Brakel 7c7bf0901a project: Rev 202
2021-12-14 18:20:58 +01:00

404 lines
9.9 KiB
Java

import java.io.EOFException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
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("mr")
@Implements("BufferedSource")
public class BufferedSource implements Runnable {
@ObfuscatedName("u")
@Export("cacheSubPaths")
public static String[] cacheSubPaths;
@ObfuscatedName("bv")
@Export("otp")
static String otp;
@ObfuscatedName("c")
@Export("thread")
Thread thread;
@ObfuscatedName("b")
@Export("inputStream")
InputStream inputStream;
@ObfuscatedName("p")
@ObfuscatedGetter(
intValue = -1854638595
)
@Export("capacity")
int capacity;
@ObfuscatedName("m")
@Export("buffer")
byte[] buffer;
@ObfuscatedName("t")
@ObfuscatedGetter(
intValue = 1353886439
)
@Export("position")
int position;
@ObfuscatedName("s")
@ObfuscatedGetter(
intValue = 980101141
)
@Export("limit")
int limit;
@ObfuscatedName("j")
@Export("exception")
IOException exception;
BufferedSource(InputStream var1, int var2) {
this.position = 0;
this.limit = 0;
this.inputStream = var1;
this.capacity = var2 + 1;
this.buffer = new byte[this.capacity];
this.thread = new Thread(this);
this.thread.setDaemon(true);
this.thread.start();
}
@ObfuscatedName("c")
@ObfuscatedSignature(
descriptor = "(II)Z",
garbageValue = "1211615101"
)
@Export("isAvailable")
boolean isAvailable(int var1) throws IOException {
if (var1 == 0) {
return true;
} else if (var1 > 0 && var1 < this.capacity) {
synchronized(this) {
int var3;
if (this.position <= this.limit) {
var3 = this.limit - this.position;
} else {
var3 = this.capacity - this.position + this.limit;
}
if (var3 < var1) {
if (this.exception != null) {
throw new IOException(this.exception.toString());
} else {
this.notifyAll();
return false;
}
} else {
return true;
}
}
} else {
throw new IOException();
}
}
@ObfuscatedName("b")
@ObfuscatedSignature(
descriptor = "(I)I",
garbageValue = "-146970254"
)
@Export("available")
int available() throws IOException {
synchronized(this) {
int var2;
if (this.position <= this.limit) {
var2 = this.limit - this.position;
} else {
var2 = this.capacity - this.position + this.limit;
}
if (var2 <= 0 && this.exception != null) {
throw new IOException(this.exception.toString());
} else {
this.notifyAll();
return var2;
}
}
}
@ObfuscatedName("p")
@ObfuscatedSignature(
descriptor = "(B)I",
garbageValue = "52"
)
@Export("readUnsignedByte")
int readUnsignedByte() throws IOException {
synchronized(this) {
if (this.position == this.limit) {
if (this.exception != null) {
throw new IOException(this.exception.toString());
} else {
return -1;
}
} else {
int var2 = this.buffer[this.position] & 255;
this.position = (this.position + 1) % this.capacity;
this.notifyAll();
return var2;
}
}
}
@ObfuscatedName("m")
@ObfuscatedSignature(
descriptor = "([BIIB)I",
garbageValue = "126"
)
@Export("read")
int read(byte[] var1, int var2, int var3) throws IOException {
if (var3 >= 0 && var2 >= 0 && var3 + var2 <= var1.length) {
synchronized(this) {
int var5;
if (this.position <= this.limit) {
var5 = this.limit - this.position;
} else {
var5 = this.capacity - this.position + this.limit;
}
if (var3 > var5) {
var3 = var5;
}
if (var3 == 0 && this.exception != null) {
throw new IOException(this.exception.toString());
} else {
if (var3 + this.position <= this.capacity) {
System.arraycopy(this.buffer, this.position, var1, var2, var3);
} else {
int var6 = this.capacity - this.position;
System.arraycopy(this.buffer, this.position, var1, var2, var6);
System.arraycopy(this.buffer, 0, var1, var6 + var2, var3 - var6);
}
this.position = (var3 + this.position) % this.capacity;
this.notifyAll();
return var3;
}
}
} else {
throw new IOException();
}
}
@ObfuscatedName("t")
@ObfuscatedSignature(
descriptor = "(I)V",
garbageValue = "1858620597"
)
@Export("close")
void close() {
synchronized(this) {
if (this.exception == null) {
this.exception = new IOException("");
}
this.notifyAll();
}
try {
this.thread.join();
} catch (InterruptedException var3) {
}
}
public void run() {
while (true) {
int var1;
synchronized(this) {
while (true) {
if (this.exception != null) {
return;
}
if (this.position == 0) {
var1 = this.capacity - this.limit - 1;
} else if (this.position <= this.limit) {
var1 = this.capacity - this.limit;
} else {
var1 = this.position - this.limit - 1;
}
if (var1 > 0) {
break;
}
try {
this.wait();
} catch (InterruptedException var10) {
}
}
}
int var7;
try {
var7 = this.inputStream.read(this.buffer, this.limit, var1);
if (var7 == -1) {
throw new EOFException();
}
} catch (IOException var11) {
IOException var3 = var11;
synchronized(this) {
this.exception = var3;
return;
}
}
synchronized(this) {
this.limit = (var7 + this.limit) % this.capacity;
}
}
}
@ObfuscatedName("c")
@ObfuscatedSignature(
descriptor = "(ILjava/lang/String;Llf;II)Liw;",
garbageValue = "821161285"
)
public static PacketBufferNode method6527(int var0, String var1, Language var2, int var3) {
PacketBufferNode var4 = HitSplatDefinition.getPacketBufferNode(ClientPacket.field2897, Client.packetWriter.isaacCipher);
var4.packetBuffer.writeByte(0);
int var5 = var4.packetBuffer.offset;
var4.packetBuffer.writeByte(var0);
String var6 = var1.toLowerCase();
byte var7 = 0;
if (var6.startsWith("yellow:")) {
var7 = 0;
var1 = var1.substring("yellow:".length());
} else if (var6.startsWith("red:")) {
var7 = 1;
var1 = var1.substring("red:".length());
} else if (var6.startsWith("green:")) {
var7 = 2;
var1 = var1.substring("green:".length());
} else if (var6.startsWith("cyan:")) {
var7 = 3;
var1 = var1.substring("cyan:".length());
} else if (var6.startsWith("purple:")) {
var7 = 4;
var1 = var1.substring("purple:".length());
} else if (var6.startsWith("white:")) {
var7 = 5;
var1 = var1.substring("white:".length());
} else if (var6.startsWith("flash1:")) {
var7 = 6;
var1 = var1.substring("flash1:".length());
} else if (var6.startsWith("flash2:")) {
var7 = 7;
var1 = var1.substring("flash2:".length());
} else if (var6.startsWith("flash3:")) {
var7 = 8;
var1 = var1.substring("flash3:".length());
} else if (var6.startsWith("glow1:")) {
var7 = 9;
var1 = var1.substring("glow1:".length());
} else if (var6.startsWith("glow2:")) {
var7 = 10;
var1 = var1.substring("glow2:".length());
} else if (var6.startsWith("glow3:")) {
var7 = 11;
var1 = var1.substring("glow3:".length());
} else if (var2 != Language.Language_EN) {
if (var6.startsWith("yellow:")) {
var7 = 0;
var1 = var1.substring("yellow:".length());
} else if (var6.startsWith("red:")) {
var7 = 1;
var1 = var1.substring("red:".length());
} else if (var6.startsWith("green:")) {
var7 = 2;
var1 = var1.substring("green:".length());
} else if (var6.startsWith("cyan:")) {
var7 = 3;
var1 = var1.substring("cyan:".length());
} else if (var6.startsWith("purple:")) {
var7 = 4;
var1 = var1.substring("purple:".length());
} else if (var6.startsWith("white:")) {
var7 = 5;
var1 = var1.substring("white:".length());
} else if (var6.startsWith("flash1:")) {
var7 = 6;
var1 = var1.substring("flash1:".length());
} else if (var6.startsWith("flash2:")) {
var7 = 7;
var1 = var1.substring("flash2:".length());
} else if (var6.startsWith("flash3:")) {
var7 = 8;
var1 = var1.substring("flash3:".length());
} else if (var6.startsWith("glow1:")) {
var7 = 9;
var1 = var1.substring("glow1:".length());
} else if (var6.startsWith("glow2:")) {
var7 = 10;
var1 = var1.substring("glow2:".length());
} else if (var6.startsWith("glow3:")) {
var7 = 11;
var1 = var1.substring("glow3:".length());
}
}
var6 = var1.toLowerCase();
byte var8 = 0;
if (var6.startsWith("wave:")) {
var8 = 1;
var1 = var1.substring("wave:".length());
} else if (var6.startsWith("wave2:")) {
var8 = 2;
var1 = var1.substring("wave2:".length());
} else if (var6.startsWith("shake:")) {
var8 = 3;
var1 = var1.substring("shake:".length());
} else if (var6.startsWith("scroll:")) {
var8 = 4;
var1 = var1.substring("scroll:".length());
} else if (var6.startsWith("slide:")) {
var8 = 5;
var1 = var1.substring("slide:".length());
} else if (var2 != Language.Language_EN) {
if (var6.startsWith("wave:")) {
var8 = 1;
var1 = var1.substring("wave:".length());
} else if (var6.startsWith("wave2:")) {
var8 = 2;
var1 = var1.substring("wave2:".length());
} else if (var6.startsWith("shake:")) {
var8 = 3;
var1 = var1.substring("shake:".length());
} else if (var6.startsWith("scroll:")) {
var8 = 4;
var1 = var1.substring("scroll:".length());
} else if (var6.startsWith("slide:")) {
var8 = 5;
var1 = var1.substring("slide:".length());
}
}
var4.packetBuffer.writeByte(var7);
var4.packetBuffer.writeByte(var8);
class370.method6755(var4.packetBuffer, var1);
if (var0 == class282.field3379.rsOrdinal()) {
var4.packetBuffer.writeByte(var3);
}
var4.packetBuffer.method7357(var4.packetBuffer.offset - var5);
return var4;
}
@ObfuscatedName("j")
@ObfuscatedSignature(
descriptor = "(I)V",
garbageValue = "843929154"
)
static void method6516() {
Iterator var0 = Messages.Messages_hashTable.iterator();
while (var0.hasNext()) {
Message var1 = (Message)var0.next();
var1.clearIsFromIgnored();
}
}
}